문제
처음 작성한 코드
answer = 0
def DFS(idx, numbers, target, value):
global answer
if idx == len(numbers):
if value == target:
answer+=1
return
DFS(idx+1,numbers,target,value+numbers[idx])
DFS(idx+1,numbers,target,value-numbers[idx])
def solution(numbers, target):
DFS(0,numbers,target,0)
return answer
1. 탈출조건: 리스트 끝까지 갔을 때
2. 끝까지 갔는데 target이 됐다? 그럼 answer+=1
3. 쭉쭉쭉 더하면서 가다가 리스트 끝까지 다 갔으면 return 하고 다시 빼기로..
깨달은 점
1. 문제를 보고 어떤 알고리즘으로 푸는 게 맞는지 생각하는 능력을 길러야겠다..
2. dfs 풀려고 오랜만에 재귀 생각하니까 재밌었다. 쉬워서 그랬나?
3. 재귀를 풀 때는 항상 탈출조건과 어떻게 돌릴건지를 생각하면 된다.
'Programmers' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 (0) | 2021.01.07 |
---|---|
[프로그래머스] 네트워크 (0) | 2021.01.06 |
[프로그래머스] 다리를 지나는 트럭 (0) | 2021.01.05 |
프린터 (0) | 2021.01.03 |
카펫 (0) | 2021.01.03 |