본문 바로가기

코딩 테스트/LeetCode(swift)

[LeetCode] 268. Missing Number

반응형

문제

leetcode.com/problems/missing-number/

 

Missing Number - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

잠깐만

손으로 계산하면서 패턴을 찾아보세요

 

코드

class Solution {
    func missingNumber(_ nums: [Int]) -> Int {
        var totalSum = 0
        var numSum = 0

        for i in 0..<nums.count {
            numSum += nums[i]
            totalSum += (i+1)
        }

        return totalSum - numSum
    }
}

 

class Solution {
    func missingNumber(_ nums: [Int]) -> Int {
        var missingNum = 0
        var addNum = 1
    
        nums.forEach {
            missingNum += (addNum - $0)
            addNum += 1
        }
        return missingNum
    }
}

//코드 최적화 전, 로직을 그대로 구현한 코드
//func missingNumber(_ nums: [Int]) -> Int {
//    var sum = 0
//    var addNum = 1
//    var numsSum = 0
//    
//    nums.forEach {
//        numsSum += $0
//        
//        sum += addNum
//        addNum += 1
//    }
//    return sum - numsSum
//}

 

설명

num이 k 일때, totalSum은 0부터 k까지의 합이며

numSum 범위는 나올 수 있는 sum의 범위 입니다.

따라서 Missing Number = totalSum - numSum가 되죠.

 

 

회고

numSum의 범위로 계산해보려 했더니, 의외로 쉽게 바로 풀려버렸습니다.

반응형

'코딩 테스트 > LeetCode(swift)' 카테고리의 다른 글

[LeetCode] 70. Climbing Stairs  (0) 2021.04.14
[LeetCode] 190. Reverse Bits  (0) 2021.04.07
[LeetCode] 338. Counting Bits  (0) 2021.04.06
[LeetCode] 191. Number of 1 Bits  (0) 2021.04.06
[LeetCode] 371. Sum of Two Integers  (0) 2021.04.06