꾸르꾸르

[LeetCode] 1. Two Sum - Easy (Swift) 본문

코딩, 알고리즘, 문제풀이/LeetCode

[LeetCode] 1. Two Sum - Easy (Swift)

GGUGGU- 2021. 3. 20. 19:15

문제링크

https://leetcode.com/problems/two-sum/

 

Two Sum - 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

 

풀이방법

배열(Input) 중에서 2개의 수를 뽑아서 더한 값이 특정 값(Target)과 동일한지 체크하는 문제이다. 

주어진 테케를 예시로 들면 [2, 7, 11, 15] 일때 4C2이므로 총 6가지의 경우의 수가 나오고, 여기서 2개의 합이 Target인지 체크하는 알고리즘을 만들면된다.

 

풀이는 먼저

1. index를 0~주어진배열의count 까지 for문을 돌린다 (첫번재의 숫자를 뽑는과정)

2. 수를 뽑은뒤, 남은 수들중에서 1개를 더뽑으면 된다. 그럼 현재 index+1부터 수를 뽑으면 중복없이 조합을 만들수있다. (두번째수를 뽑는과정)

3.  exactly one solution 이라고 했으므로 중간에 return 시켜서 바로 끝내버려도 상관이 없다. 또 이래야 답은 1개일테니까..

 

첫번재 테케를 예를들면,

조합은 [2, 7] [2, 11] [2, 15] [7, 11] [7, 15] [11, 15] 순으로 만들어 질것이고,

이때 Target은 9이므로 합이 9인것은 [2,7]이다. [2, 7]의 각 index는 0,1 이므로 [0, 1] 배열을 리턴 시키면된다.

 

소스코드

class Solution {
    func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
        var answer: [Int] = []
        for (index, num) in nums.enumerated() {
            for i in (index+1)..<nums.count {
                if (num + nums[i]) == target {
                    answer.append(index)
                    answer.append(i)
                    return answer
                }
            }
        }
        return answer
    }
}

 

Comments