타겟 넘버
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 내 풀이
- 시간 복잡도를 고려해서 알고리즘의 방향을 바꿨다!!
- 처음에는 중복순열인가..? +, - 를 중복 순열로 가능한 모든 경우를 숫자에 붙여가면서 eval()을 사용해서 계산해야하나 고민하다가
- 그렇다면 앞의 계산을 기억해야하는데... 하다가 dfs가 번뜩 떠올랐다
- +,- 해가면서 계산 한 후 target값과 같아지는 경우만 체크
- 2^20 = 1,048,576 (약 100만 번) 정도라 터지지 X → 2^30 (10억 번) 부턴 터짐
- 시간 복잡도를 고려해서 알고리즘의 방향을 바꿨다!!
def 밖에서 answer을 정의해준 후에 global로 불러와서 사용해야 한다
answer=0
def solution(numbers, target):
global answer
def dfs(idx, tmp):
global answer
if idx==len(numbers):
if tmp==target:
answer+=1
return
dfs(idx+1, tmp+numbers[idx])
dfs(idx+1, tmp-numbers[idx])
dfs(0,0)
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [BFS] 무인도 여행 (1) | 2023.12.17 |
|---|---|
| [Heap][해시] 베스트 앨범 (1) | 2023.12.10 |
| [DP] 정수 삼각형 (1) | 2023.12.02 |
| [프로그래머스][조합] 이모티콘 할인행사 (0) | 2023.10.15 |
| [프로그래머스][queue] 두 큐 합 같게 만들기 (1) | 2023.10.15 |