문제
1480. Running Sum of 1d Array
풀이
class Solution {
func runningSum(_ nums: [Int]) -> [Int] {
var answer = [Int]()
var sum = 0
for i in 0..<nums.count {
if i == 0 {
sum += nums[i]
answer.append(nums[i])
} else {
sum += nums[i]
answer.append(sum)
}
}
return answer
}
}
🤔 FEEDBACK
- 다 풀고나니까 왜 nums[0] 를 따로 처리했는지 모르겠다 .. ㅋㅋㅋ;
Prefix Sum
이라고 써있는 키워드를 완전히 무시하고 풀었다.
- 알고보니 이 문제는 구간 합 알고리즘의 제일 기본 문제였다.
- 구간 합이란 수들의 나열에서 특정 구간의 합을 의미한다.
- 나처럼 반복문을 사용하면 시간복잡도는 O(n)이지만 알고리즘을 사용하면 O(1)이 된다.
- 앞으로는 키워드를 잘 보고 풀어야겠다.
다른 풀이
class Solution {
func runningSum(_ nums: [Int]) -> [Int] {
var res = [Int](repeating: 0, count: nums.count)
res[0] = nums[0]
for i in 1..<nums.count {
res[i] = res[i - 1] + nums[i]
}
return res
}
}
- 구간합 알고리즘을 제대로 구현한 코드 ..!
- 맨 처음에 기본 값으로 배열의 길이만큼 0을 가진 배열을 선언하고,
어차피 맨 앞 배열은 그대로 사용되기 때문에 nums[0]으로 초기화 해준다.
그리고 나머지 1부터 끝까지 반환될 배열의 동일한 위치에
nums[i-1] 값과 현재 값을 더해서 초기화 시키면 된다.
- 코드 작성자 velog : https://velog.io/@eugenie8
class Solution {
var result: Int = 0
var resultArr: [Int] = []
func runningSum(_ nums: [Int]) -> [Int] {
for x in nums{
result += x
resultArr.append(result)
}
return resultArr
}
}