728x90
🍒문제
programmers.co.kr/learn/courses/30/lessons/43165
🍒풀이
재귀함수를 사용해서 -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
'코딩 테스트' 카테고리의 다른 글
[프로그래머스] 뉴스 클러스터링 (Python) (0) | 2021.03.24 |
---|---|
[프로그래머스] 게임 맵 최단거리 (C++) (0) | 2021.03.23 |
[프로그래머스] 가장 큰 정사각형 찾기 (Python) (0) | 2021.03.23 |
[프로그래머스] 문자열 압축 (Python) (0) | 2021.03.22 |
[기타] 시간 복잡도 / 예외처리 (0) | 2021.03.20 |
댓글