THIS IS ELLIE

LeetCode알고리즘 Find the Duplicate Number 본문

공부/Algorithm

LeetCode알고리즘 Find the Duplicate Number

Ellie Kim 2021. 4. 28. 18:45

오늘 풀어볼 문제는 287번이고 58.1%의 성공률을 보입니다.
며칠 전에 풀었던 문제와 굉장히 비슷하네요. hyerios.tistory.com/219
저번 문제는 중복되는 숫자가 있는지 여부를 판단해야 했다면, 이번 문제는 어떤 숫자가 중복되는지를 리턴해주면 됩니다.

문제를 살펴보겠습니다.

nums 정수 배열이 주어지면  반복되는 오직 한 숫자가 있고 그걸 리턴해주면 됩니다.

아래 주어진 예제를 살펴봅시다.

하나의 중복된 숫자를 찾아서 리턴해주면 됩니다.


이전에 풀었던 방식인 딕셔너리를 이용해 문제를 풀어보겠습니다.

class Solution {
    func findDuplicate(_ nums: [Int]) -> Int {
        var dict = [Int: Int]()
        
        for i in nums {
            if dict[i] != nil {
                return i
            } else {
                dict[i] = 1
            }
        }
        return 0
    }
}

주어진 배열 nums를 돌면서 각각의 값인 i가 딕셔너리에 있는지 확인해줍니다.
i가 이미 딕셔너리에 저장되어 있으면, 1이 리턴되기 때문에 if 조건문에 만족하게 됩니다.
i가 딕셔너리에 저장되어 있지 않으면, nil이 리턴되고 else가 실행되어 딕셔너리에 i를 키로 1을 값으로 저장해줍니다. 
이렇게 중복을 찾아줍니다.

오직 하나의 중복된 숫자만 있기 때문에 if 조건문에 들어오면 바로 i를 리턴해주면 됩니다.

반응형