[프로그래머스][Python3] 타겟 넘버
2019. 11. 11. 00:26 |
프로그래밍/기타
문제 :
https://programmers.co.kr/learn/courses/30/lessons/43165
나의 풀이 :
def solution(numbers, target):
def dfs(target, remain, visit, end):
if abs(target) <= remain:
if visit == end:
if abs(target) == remain:
nonlocal ans
ans += 1
else:
num = numbers[visit]
dfs(target+num, remain-num, visit+1, end)
dfs(target-num, remain-num, visit+1, end)
numbers = sorted(numbers, reverse=True)
ans = 0
dfs(target, sum(numbers), 0, len(numbers)-1)
return ans
한마디 :
모든 경우의 수를 탐색하기에 앞서 가지치기를 위해 역순 정렬을 먼저 해두었다. 큰 수부터 먼저 처리를 해야 나머지 경로를 추가 탐색할 가치가 있는지 빠르게 판단할 수 있다.
'프로그래밍 > 기타' 카테고리의 다른 글
2024 후기 성대경시 초등 4학년 30번 문제 (1) | 2024.10.08 |
---|---|
아파트 실거래가 조회 실거래닷컴 (11) | 2020.02.11 |
[프로그래머스][Python3] 단어 변환 (1) | 2019.11.22 |
[Python3][2020카카오공채] 가사 검색 (0) | 2019.10.07 |
[Python3][2020카카오공채] 괄호 변환 (0) | 2019.10.04 |
[Python3][2020카카오공채] 문자열 압축 (0) | 2019.10.03 |
[Python] json.dumps 한글 유니코드 (0) | 2019.04.05 |
하노이의 탑 (1) | 2019.02.13 |
최근에 달린 댓글 최근에 달린 댓글