[Programmers] 깊이/너비 우선 탐색(DFS/BFS) > 타겟 넘버
6271 단어 programmersalgorithmalgorithm
문제링크
https://programmers.co.kr/learn/courses/30/lessons/43165
제출코드
ver1 (for문을 이용한 풀이 --> Timeout Error 발생)
def solution(numbers, target):
tree_num = [0]
tree = []
for i in numbers:
for j in tree_num:
tree.append(i+j)
tree.append(i-j)
tree_num = tree
return tree_num.count(target)
ver2 (재귀함수를 이용한 풀이)
def solution(numbers, target):
n = len(numbers)
target_cnt = 0
def dfs(idx, result):
if idx == n:
if result == target:
nonlocal target_cnt
target_cnt += 1
return 0
else:
dfs(idx+1, result+numbers[idx])
dfs(idx+1, result-numbers[idx])
dfs(0, 0)
return target_cnt
ver3 (다른 사람 풀이)
def solution(numbers, target):
if numbers == []:
if target == 0:
return 1
else:
return 0
else:
return solution(numbers[1:], target+numbers[0]) + solution(numbers[1:], target-numbers[0])
Author And Source
이 문제에 관하여([Programmers] 깊이/너비 우선 탐색(DFS/BFS) > 타겟 넘버), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hizzang920/Programmers-깊이너비-우선-탐색DFSBFS-타겟-넘버저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)