[Leetcode] 3432. Count Partitions with Even Sum Difference

RexiaN·2025년 12월 5일

배열의 특정 원소를 기준으로 왼쪽의 합과 오른쪽의 합으로 나눴을 때, 양쪽의 합을 큰 값에서 작은 값을 뺀 값이 짝수인 경우의 수를 세는 문제.

일단 전체 합을 알아야 해서 배열을 무조건 한 번은 먼저 돌아야 하므로 .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;
};

profile
Don't forget Rule No.1

0개의 댓글