Algorithm/Codility
[Codility] Lesson 3. Time Complexity - TapeEquilibrium
sirius
2021. 3. 29. 10:53
배열에는 첫 번째 파트와 두 번째 파트가 있다.
0부터 배열의 차수까지가 첫번째 파트, 그 다음부터 마지막까지가 두번째 파트이다.
첫번째 파트에서 두번째 파트를 마이너스 한 값의 절대값 중에서 최소값을 구한다.
int[] A = {1,2,3,4,5};
0차 (1) - (2 + 3 + 4 + 5) = |-13|
1차 (1 + 2) - (3 + 4 + 5) = |-9|
2차 (1 + 2 + 3) - (4 + 5) = |-3|
3차 (1 + 2 + 3 + 4) - (5) = |5|
public int solution(int[] A) {
int total = 0;
int first = 0;
int second = 0;
int min = Integer.MAX_VALUE;
for (int i = 0; i < A.length; i++) {
total += A[i];
}
for (int i = 1; i < A.length; i++) {
first += A[i - 1];
second = total - first;
min = Math.min(min, Math.abs(first - second));
}
return min;
}