문제 :
예전에 풀어봤던 dfs/bfs 문제를 다시 풀어보았다
Solution
예전 풀이 : BFS (deque() 사용)
from collections import deque
def solution(numbers, target):
answer = 0
size=len(numbers)
dq=deque()
dq.append((0,0))
while dq:
cur,cnum=dq.popleft()
if cur==size and cnum==target:
answer+=1
else:
if cur<size:
nnum=numbers[cur]
dq.append((cur+1,cnum+nnum))
dq.append((cur+1,cnum-nnum))
return answer
이번 풀이 : DFS
res=0
def dfs(numbers,num,target,idx):
global res
if idx==len(numbers):
if num==target:
res+=1
return
else : return
dfs(numbers,num+numbers[idx],target,idx+1)
dfs(numbers,num-numbers[idx],target,idx+1)
def solution(numbers, target):
global res
dfs(numbers, 0, target, 0)
return res
반응형
'Problem Solving > Programmers' 카테고리의 다른 글
그리디 (Level 1) : 체육복 (Python, copy 라이브러리) (0) | 2021.05.17 |
---|---|
완전탐색 (Level 1) : 모의고사 (Python) (0) | 2021.05.10 |
정렬 (Level 1) : k번째 수 (Python) (0) | 2021.05.10 |
스택/큐 (Level 2) : 주식가격 (Python) (0) | 2021.05.09 |
해시 (Level 1) : 완주하지 못한 선수 (Python Dictionary, Counter) (0) | 2021.05.05 |