PS/LeetCode

LeetCode / Prefix Sum / 1480번 / Running Sum of 1d Array / JS

KimMinJun 2023. 3. 25. 13:54

< 문제 바로가기 >

 

Running Sum of 1d Array - LeetCode

Can you solve this real interview question? Running Sum of 1d Array - Given an array nums. We define a running sum of an array as runningSum[i] = sum(nums[0]…nums[i]). Return the running sum of nums.   Example 1: Input: nums = [1,2,3,4] Output: [1,3,6,

leetcode.com

 

< 문제 간단 설명 >

nums 라는 배열이 주어지면 각 원소를 순회하면서 누적합을 구해서 return 해주면 되는 문제이다.

 

/**
 * @param {number[]} nums
 * @return {number[]}
 */
 var runningSum = function(nums) {
  let result = [];

  nums.reduce((acc, cur) => {
      acc += cur;
      result.push(acc);    
      return acc;
  }, 0);

  return result;
};

누적합을 구한다고 생각했을 때, 바로 떠오르는 method가 reduce() 였다.

acc 라는 누산기 역할을 하는 변수에 현재의 값인 cur을 계속 더해주면서 저장해준다.

위 코드에서 reduce의 맨 마지막에 들어가는 인자인 0은 acc의 초기값이다. 만약 초기값이 없이 한다면 초기값은 자동으로 배열의 맨 첫번째 요소가 된다.

 

따라서 acc의 현재의 값인 cur을 더해주고 result에 push를 해준다.

이때 acc를 return 해주어야 하는데, 그래야 다음 순회에서 return된 acc을 그대로 가져가서 쓸 수 있기 때문이다.