x번째 나무를 loc의 위치에 심어야 한다고 해 봅시다.
(1) loc보다 크거나 같은 좌표에 있는 나무들의 갯수 : x개
(2) loc보다 크거나 같은 좌표에 있는 나무들의 좌표의 합 : sum_one
(3) loc보다 작은 좌표에 있는 나무들의 갯수 : y개
(4) loc보다 작거나 같은 좌표에 있는 나무들의 좌표의 합 : sum_two
현재 기준점은 loc입니다.
loc보다 크거나 같은 경우에는 나무 좌표 - loc이 거리가 되겠네요.
각 나무마다 loc을 빼기 때문에
sum_one - loc * x이 되고요.
loc보다 작은 나무들은
(loc - 나무 좌표)가 거리가 되는데요.
이건 loc * y - sum_two로 계산할 수 있죠.
예를 들어서
5
[3 2 0 4] 1
이 있다고 가정하고, 1에 나무를 심는다고 가정해 봅시다.
그러면 1보다 크거나 같은 나무의 갯수는 3 = x
그것들의 좌표의 합은 9 = sum_one
1보다 작은 나무의 갯수 1 = y
그것들의 좌표의 합은 0입니다. = sum_two
현재 loc = 1이고요.
sum_one - loc * x + loc * y - sum_two에 대입하면
9 - 1 * 3 + 1 * 1 - 0 = 9 - 3 + 1 = 7이 됩니다.
zmfldlwl 6년 전 1
예를 들어
5
3 2 0 4 1
과 같이 정렬되지 않은 input이 들어오게된다면...
결과값을 계산해보면
1
1 + 3
1 + 2 + 4
2 + 1 + 1 + 3
1 * 4 * 7 * 7 = 196이라는 output이 나와야 합니다.
그런데, 각 구간의 거리들이 모두 독립적인 값들이라서 그 다음 값들에 영향을 미치지 않을거 같아서...
펜윅을 어떤식으로 적용시켜서 문제를 풀어가는 로직을 구상해야할지 감이 안오네요...
하루종일 보고 있어서 제자리걸음인거 같아서 질문 올립니다...