[LeetCode] [Swift] 1480. Running Sum of 1d Array

doyeonjeong_·2022년 7월 28일
0

LeetCode

목록 보기
1/5
post-thumbnail
post-custom-banner

Hits

문제

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 { // 필요없는 코드 1
                sum += nums[i] // 필요없는 코드 2
                answer.append(nums[i]) // 필요없는 코드 3
            } 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
    }
}
  • 내 코드에서 필요없는 부분을 쏙 뺀 코드..
profile
블로그 이사중 🚚 byukbyak.tistory.com
post-custom-banner

0개의 댓글