배열을 이분할하여 두 구역의 차이가 가장 적은 경우 구하기
알고리즘: Sliding window
import java.util.*;
class Solution {
public int solution(int[] A) {
int len = A.length;
int first = 0, ans = 2147483647;
int second = Arrays.stream(A).sum(); // 배열 전체 합 구하기
for (int i = 0; i < len - 1; i++) {
first += A[i]; // 첫번째 구역
second -= A[i]; // 배열 전체 합에서 첫번째 구역 빼기
ans = getMin(first - second, ans); // 절대값 차 및 최소값 찾기
}
return ans;
}
public int getMin(int a, int b) {
a = a > 0 ? a : a * -1;
return a < b ? a : b;
}
}
하루에 한 문제는 풀겠다는 일념으로.. 또 easy...
아무튼! 문제를 보고 sliding window 방식이 떠올라서 그렇게 풀었다..
딱히 쓸 말이...