주어진 리스트를 두 개로 분할했을 때, 각 리스트별 원소값 총합을 구하고 총합 차이가 가장 작을 때 그 차이가 얼마인지 구해야 하는 문제.
하나의 변수에는 0, 또 다른 변수에는 주어진 리스트 A의 총합을 대입해둔다. 그 후에 A를 순회하며 값을 넣고 빼고 비교하면서 최소 차이를 찾으면 된다.
https://app.codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/
cpp code
int solution(vector<int> &A) {
int a=0, b=0;
for (int i : A) {
b += i;
}
int min_diff = 2001;
for (int i=0; i<A.size()-1; i++) {
a += A[i];
b -= A[i];
if (abs(b - a) < min_diff) {
min_diff = abs(b - a);
}
}
return min_diff;
}