※ 타겟 넘버
https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 해결 TIP
DFS로 구현한다.
숫자 한 개에 대해 음수, 양수 2가지 경우의 수를 각각 뻗어나가며 모든 경우의 수 중에, 마지막 결과가 타겟과 같을 때 방법 하나를 추가하는 식으로 진행한다.
전체 코드
answer = 0
def dfs(numbers, target, result, idx):
global answer
# 깊이가 같고 마지막 결과가 타겟과 같을 때
if idx == len(numbers):
if result == target:
answer+=1
return answer
# 깊이가 같지 않다면 다음 숫자의 음수, 양수 더하기
else:
dfs(numbers,target,result+numbers[idx],idx+1)
dfs(numbers,target,result-numbers[idx],idx+1)
def solution(numbers, target):
dfs(numbers,target,0,0)
return answer
'Python > DFS&BFS' 카테고리의 다른 글
[Algorithm] 백준 2606 바이러스 | 파이썬 BFS (0) | 2024.06.26 |
---|---|
[Algorithm] 백준 14888 연산자 끼워 넣기 (삼성전자 SW 역량테스트 기출문제) | 파이썬 (0) | 2024.04.13 |
[Algorithm] 백준 1260 DFS와 BFS | 파이썬 (0) | 2024.01.17 |
[Algorithm] BFS(Breadth-first search,너비 우선 탐색) (1) | 2024.01.05 |
[Algorithm] DFS(Depth-First Search,깊이 우선 탐색) (1) | 2024.01.05 |
댓글