백준/Python

[백준] 26072 곰곰이와 시소 (python 파이썬)

노랑꼬리 2022. 11. 28. 23:26

문제링크 : https://www.acmicpc.net/problem/26072

 

26072번: 곰곰이와 시소

첫번째 줄에 정수 $N$과 $L$이 공백을 사이에 두고 주어진다. $(1 \le N, L \le 100\,000)$ 두번째 줄에 정수 $x_1, x_2, \cdots, x_N$이 공백을 사이에 두고 주어진다. $(0 \le x_i \le L)$ 세번째 줄에 정수 $w_1, w_2, \c

www.acmicpc.net

 

 

작성코드

 

 

풀이

 

1) 문제 노트에 있는 공식을 활용해서 풀어야한다.

 

WL은 왼쪽에 있는 치킨들의 값

WR은 오른쪽에 있는 치킨들의 값으로 생각하면 된다.

 

Σ 는 숫자의 합이므로 Σ(1~N)이라면 1~N 까지의 합이다

 

 

2) 시그마 공식을 그대로 써서 계산하면 바로 나오겠지만 이해하기 쉽도록 WL = WR을 말로 정리해보자면

 

왼쪽 치킨들의 무게 * (받침점 - 왼쪽 치킨들 위치) = 오른쪽 치킨들의 무게 * (오른쪽 치킨들 위치 - 받침점)

왼쪽 치킨들 무게 * 받침점 - 왼쪽 치킨들의 (무게*위치)  = 오른쪽 치킨들의 (무게*위치) - 오른쪽 치킨들의 무게* 받침점

 

왼쪽 (무게 * 받침점) + 오른쪽 (무게 * 받침점) = 오른쪽 (무게*위치) + 왼쪽 (무게 * 위치)

전체 (무게 * 받침점) = 전체 (무게 * 위치)

 

※ 시그마에서 내부 같은 값 곱은 시그마 밖으로 꺼낼 수 있다.

전체 (무게 * 받침점) = 받침점 * 전체(무게)

 

받침점 = 전체(무게*위치) / 전체(무게)

 

 

3) 이를 코드로 작성하면

 

전체의 무게*위치 값은 for문을 통해 계산을 누적해준다.

 

이를 전체 무게로 나누면 받침점 위치를 구할 수 있다.