LeetCode - 2574. Left and Right Sum Differences

henu·2023년 9월 2일
0

LeetCode

목록 보기
40/186
post-thumbnail

Solution

var leftRightDifference = function(nums) {
    let rightSum = nums.reduce((acc, cur) => acc + cur, 0)
    let leftSum = 0;

    return nums.map(e => {
        rightSum -= e;
        let res = rightSum - leftSum;
        leftSum += e;
        return Math.abs(res);
    })
};

Explanation

문제의 요구사항에 맞춰 단순하게 접근해서 for문이나 map 메소드를 이용해서 leftSum 배열과 rightSum 배열을 하나하나 구한 후 두 배열의 차를 얻는 방법으로 해결할수도있다.
하지만 뭔가 수학적인(?) 규칙이 있는 것 같아 그 규칙을 이용해서 풀어보았다.
예제를 이용해서 알아낸 규칙은 다음과 같다.

indexLeftSumRightSum
01 + 2 + 3 + ... + nums.length-1
102 + 3 + ... + nums.length-1
20 + 13 + ... + nums.length-1
30 + 1 + 24 + ... + nums.length-1
nums.length-10 + 1 + 2 + 3 + ... + nums.length-2

즉, 특정 인덱스에서 해당 요소가 LeftSum에는 더해지고 동시에 RightSum에서는 빼지게된다.
그래서 일단 RightSum을 모든 요소들의 합, LeftSum을 0으로 초기설정한다.
그리고 map 메소드를 이용한다.
먼저 rightSum에서 현재 요소를 뺀 다음 leftSum를 뺀다. 그리고 그 다음에 leftSum에 현재 요소를 더한다.

0개의 댓글