- 길이 N(≥2)인 정수 배열 A가 주어짐.
- 0 < P < N 인 모든 분할점 P에 대해,
왼쪽 합 S_left = A[0] + ... + A[P-1]
오른쪽 합 S_right = A[P] + ... + A[N-1]
의 차이 |S_left - S_right| 를 계산할 수 있다.
- 가능한 분할 중 최소 차이를 반환하라.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | public class TapeEquilibrium { public int solution(int[] A) { long total = 0; foreach (int num in A) { total += num; } // 이항 과정 // total = S_left + S_right // -S_right = S_left + -total // S_right = -S_left + total // S_right = total - S_left long leftSum = 0; long minDiff = long.MaxValue; for (int i = 0; i < A.Length - 1; i++) { leftSum += A[i]; long rightSum = total - leftSum; long diff = Math.Abs(leftSum - rightSum); if (diff < minDiff) minDiff = diff; } return (int)minDiff; } } | cs |
'코딜리티 > Lesson' 카테고리의 다른 글
| PermCheck (순열) (0) | 2025.09.15 |
|---|---|
| FrogRiverOne (0) | 2025.09.15 |
| PermMissingElem (등차수열) (0) | 2025.09.14 |
| FrogJmp (0) | 2025.09.14 |
| OddOccrurrencesInArray (짝 없는 원소) (0) | 2025.09.13 |