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의 데이터로 재배열 하겠다
이런 뜻이라고 생각한다. 이 알고리즘 학습은 내가 문제에 익숙해지는 효과도 있지만 역시 다른 유저의 답변을 보면서 다양한 답변을 접하고 새로운 지식도 얻을 수 있는 장점이 있다고 생각한다.
'알고리즘 > 해결' 카테고리의 다른 글
LeetCode August1.Detect Capital (0) | 2020.08.03 |
---|---|
LeetCode1528. Shuffle String (0) | 2020.07.30 |
LeetCode1470. Shuffle the Array (0) | 2020.07.28 |
LeetCode1464. Maximum Product of Two Elements in an Array (0) | 2020.06.05 |
LeetCode1389. Create Target Array in the Given Order (0) | 2020.06.05 |