알고리즘/해결

LeetCode1480. Running Sum of 1d Array

언클린 2020. 7. 30. 09:25
728x90

1. 문제(원본)

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,10] Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].

Example 2:

Input: nums = [1,1,1,1,1] Output: [1,2,3,4,5] Explanation: Running sum is obtained as follows: [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1].

Example 3:

Input: nums = [3,1,2,10,1] Output: [3,4,6,16,17]

 

Constraints:

  • 1 <= nums.length <= 1000
  • -10^6 <= nums[i] <= 10^6

2. 문제

입력받은 정수형 배열의 인덱스를 순차적으로 인덱스의 합으로 재배열하라

3. 나의 답

class Solution {

    func runningSum(_ nums: [Int]) -> [Int] {

        var sumIndex = 0

        var resultArray: [Int] = []

        nums.forEach { (index) in

            sumIndex += index

            resultArray.append(sumIndex)

        }

        return resultArray

    }

}

4. 다른 유저의 답

#1

func runningSum(_ nums: [Int]) -> [Int] {

        var sum = 0

        return nums.map{(sum+=$0, sum).1}

    }

5. 마무리

대부분의 답변은 같았지만 역시나 하나 정도는 간단 명료하게 작성되어 있었다. map을 사용한 방법이었는데 이 코드를 보자마자 맞다! 하는 생각이 들었다. 배열을 재배열하는 기능을 가진 map에서 내 나름대로 해석해보자면

(sum += $0, sum).1 -> 재배열하는 데이터는 1 즉 sum += $0 의 void형이 0번 sum인 int형이 1이기 때문에 1의 데이터로 재배열 하겠다 

이런 뜻이라고 생각한다. 이 알고리즘 학습은 내가 문제에 익숙해지는 효과도 있지만 역시 다른 유저의 답변을 보면서 다양한 답변을 접하고 새로운 지식도 얻을 수 있는 장점이 있다고 생각한다.

728x90