반응형
프로그래머스(programmers) 타겟 넘버 python 정답[DFS 풀이]
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/43165
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 정답
def solution(numbers, target):
return recur(numbers,target)
def recur(numbers,target):
if len(numbers) == 0 and target == 0 : return 1
if len(numbers) == 0 and target != 0 : return 0
return recur(numbers[:-1],target-numbers[-1]) + recur(numbers[:-1],target+numbers[-1])
문제 해설
dfs(재귀)를 이용한다
- target에 number의 마지막 요소를 더한 뒤, 배열을 조정하고 재귀 함수를 호출한다.
- target에 number의 마지막 요소를 뺀 뒤, 배열을 조정하고 재귀 함수를 호출한다.
각 노드는 양 쪽이 다 target을 만드는 데 성공하면 2, 하나만 만들면 1, 하나도 못만들면 0을 리턴하며,
구조적으로 바이너리 트리와 유사하게 된다.
따라서 시간복잡도는 2^n가 될 것이다.
(물론 총 함수의 호출 수는 등비급수가 될 테지만...)
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스(programmers) 네트워크 python 정답[DFS 풀이] (0) | 2023.02.08 |
---|---|
프로그래머스(programmers) 게임 맵 최단거리 python 정답[BFS 풀이] (0) | 2023.02.08 |
프로그래머스(programmers) 사칙연산 python 정답[동적계획법 풀이] (0) | 2023.02.07 |
프로그래머스(programmers) 도둑질 python 정답[동적계획법 풀이] (0) | 2023.02.07 |
프로그래머스(programmers) 등굣길 python 정답[동적계획법 풀이] (0) | 2023.02.07 |