
문제 풀이
1. dfs bfs 둘 다 풀이가 가능하다고 생각하지만 dfs가 조금 더 쉽기도 하고 제한사항에서 숫자가 20개 이하이기 때문에 터지지 않기에 dfs를 사용하여 풀었음
2. 값들의 변경이 끝나고 숫자들의 합이 target 값이 되면 dfs 함수를 종료
3. return 값은 dfs 함수를 파고들어가서 종료 시점 기준으로 1 혹은 0 을 반환.
(dfs에 들어가는 총 합에 numbers[cnt]를 더하거나 빼서 +1인지 -1인지를 구분함)
4. 0, 0을 넣어서 함수 실행
def solution(numbers, target):
def dfs(cnt, current_sum):
if cnt == len(numbers):
if current_sum == target:
return 1
else:
return 0
return dfs(cnt + 1, current_sum + numbers[cnt]) + dfs(cnt + 1, current_sum - numbers[cnt])
return dfs(0, 0)반응형
'프로그래머스 - Python > 알고리즘 고득점 Kit' 카테고리의 다른 글
| 알고리즘 고득점 Kit - DFS/BFS - 단어 변환 (0) | 2025.06.17 |
|---|---|
| 알고리즘 고득점 Kit - BFS - 게임 맵 최단거리 (0) | 2025.06.17 |
| 알고리즘 고득점 Kit - 완전탐색 - 모의고사 (0) | 2025.06.11 |
| 알고리즘 고득점 Kit - 완전탐색 - 최소직사각형 (0) | 2025.06.11 |
| 알고리즘 고득점 Kit - 해시 - 전화번호 목록 (0) | 2025.06.11 |