swift 리트코드 문제풀이 - leetcode 1 두 수의합

swift 리트코드 문제풀이 - leetcode 1 두 수의합

 

leetcode 1Two Sum

 

문제

덧셈하여 타겟을 만들 수 있는 배열의 두 숫자 인덱스를 리턴하라.

 

예제 1:

Input: nums = [2,7,11,15], target = 9

Output: [0,1]

 

예제 2:

Input: nums = [3,2,4], target = 6

Output: [1,2]

 

예제 3:

Input: nums = [3,3], target = 6

Output: [0,1]

 

 

이번 문제의 난이도는 어려운 편은 아닌듯.

주어진 파리미터는 두개임.

배열 = [2,7,11,15] 과 타겟숫자 9.

배열안의 숫자 2개를 더해서 9가되는 숫자 두개를 배열로 반환하면 됨.

 

바로 생각난 아이디어는 기준 숫자를 하나 정하고, 기준 숫자 다음의 숫자를 차례대로 더해서 타겟과 같은지 체크하는것임

 

예를들어 배열의 첫번째 숫자 2 부터, 반복문을 돌면서 2+7, 2+11, 2+15 를 더해서 타겟 숫자와 확인하고 2가 끝나면 그 다음 숫자 7을 기준 숫자로 정해서 7+11, 7+15 이런식으로 체크를 하는 로직을 떠올려봤다.

 

타겟 숫자와 비교해서 같으면 해당 두 숫자를 배열에 넣어서 리턴해주면 끝.

 

let twoSumArray = [2,7,11,15]
let twoSumTarget = 9
func twoSum(_ nums: [Int], _ target: Int) -> [Int] {
    
    //기준 숫자 인덱스
    var targetIndex = 0
    //비교 숫자 인덱스
    var anotherNumIndex = 0
    let arrayLength = nums.count
    var returnResult: Array<Int> = []
    
    for (idx, num) in nums.enumerated() {
        
        targetIndex = idx
        anotherNumIndex = targetIndex+1
        print("기준숫자 idx : \(idx) , 기준숫자 : \(num)")
        print("")
        
        while(anotherNumIndex <= arrayLength-1){
            
            print("더할 숫자 : \(nums[anotherNumIndex])")
            
            //두수를 더해서 target 숫자와 같은지 체크
            if (nums[targetIndex] + nums[anotherNumIndex]) == target{
                print("찾았다.")
                returnResult.append(targetIndex)
                returnResult.append(anotherNumIndex)
                return returnResult
            }
            
            anotherNumIndex+=1
        }

        print("")
    }
    
    return returnResult
}

 

결과는 통과!

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