코딩 테스트
[프로그래머스] 타겟넘버 (Python)
zoodi
2021. 3. 23. 22:18
728x90
🍒문제
programmers.co.kr/learn/courses/30/lessons/43165
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+
programmers.co.kr
🍒풀이
재귀함수를 사용해서 -numbers[idx] 또는 +numbers[idx]을 해주어총 합계를 구하였다.
idx가 numbers 리스트의 범위를 벗어나면 target 과 total 합계가 동일한지 확인한 후 동일하면 answer을 증가한다.
이때 solution 함수 내에다가 함수 선언 후 answer 변수를 쓰려면 nonlocal를,
solution 함수 밖에다가 함수 선언 후 answer 변수를 쓰려면 global answer라고 선언을 해준 후 카운트 해줘야한다.
🍒코드
def solution(numbers, target):
answer = 0
def dfs(idx, numbers, total, target):
if(idx >= len(numbers)):
if total == target:
nonlocal answer
answer += 1
return
dfs(idx+1, numbers, total+numbers[idx], target)
dfs(idx+1, numbers, total-numbers[idx], target)
dfs(0, numbers, 0, target)
return answer
728x90