[Swift / Python] 프로그래머스(Lv2) - 타겟 넘버

Kerri·2021년 5월 18일
0

코테

목록 보기
47/67

안녕하세요.
이것도 전에 파이썬으로 풀어본건데 예전에 어떻게 풀었는지 생각이나더라구요.

그래서 똑같은 방식 사용해서 Swift 로도 풀어봤습니다.

https://programmers.co.kr/learn/courses/30/lessons/43165

+를 해주는 경우, -를 해주는 경우 DFS를 이용해서 구했습니다.

먼저 파이썬으로 푼 코드입니다.

answer = 0

def solution(numbers, target):

    # dfs로 풀기
    def dfs(idx, numbers, target, value):
        global answer

        end = len(numbers)
        if idx == end:
            if target == value:
                answer += 1
            return

        dfs(idx+1, numbers, target, value+numbers[idx])
        dfs(idx+1, numbers, target, value-numbers[idx])

    dfs(0, numbers, target, 0)

    return answer

Swift로 푼 코드입니다.

import Foundation

func solution(_ numbers:[Int], _ target:Int) -> Int {
    var ans = 0
    var idx = 0
    func dfs(_ idx:Int, _ numbers:[Int], _ current:Int, _ target:Int) -> Void {
        if numbers.count == idx {
            if current == target {
                ans += 1
            }
            return
        }
        
        dfs(idx + 1, numbers, current + numbers[idx], target)
        dfs(idx + 1, numbers, current - numbers[idx], target)
    }
    dfs(0, numbers, 0, target)
    
    return ans
    
}
profile
안녕하세요 !

0개의 댓글