배열의 특정 원소를 기준으로 왼쪽의 합과 오른쪽의 합으로 나눴을 때, 양쪽의 합을 큰 값에서 작은 값을 뺀 값이 짝수인 경우의 수를 세는 문제.
일단 전체 합을 알아야 해서 배열을 무조건 한 번은 먼저 돌아야 하므로 .reduce() 로 한 번 돌고 계산. 만약 실행시간이 오래 걸리면 합 대신 홀수의 갯수만 센다거나 하는 최적화를 해야 하려나 싶었는데 괜찮아서 끝.
function countPartitions(nums: number[]): number {
const sum = nums.reduce((acc, cur) => acc + cur, 0);
let answer = 0;
let leftSum = 0;
for (let i = 0; i < nums.length - 1; i++) {
leftSum += nums[i]
const rightSum = sum - leftSum
if ((Math.abs(rightSum - leftSum)) % 2 === 0) {
answer += 1;
}
}
return answer;
};
