오늘은 프로그래머스의
dfs/bfs에 있는 가장 첫 번째 문제
타겟 넘버를 가져왔다.
https://programmers.co.kr/learn/courses/30/lessons/43165
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+
programmers.co.kr
풀면서 느낀 점은 이 문제는
dfs/bfs보다는 완전 탐색에 가까운 거 같다.
1. 아이디어
예시를 확인해보면
1, 1, 1, 1, 1이라는 숫자가 주어지고
타겟 넘버가 3일 경우
아래와 같은 경우가 가능하므로
답인 5가 된다.
그렇기에
처음 기본값을 0으로 두고
숫자들을 차례로
더하고 빼보는 모든 과정을 하며
마지막 숫자가 계산되었을 때
결괏값을 타켓 넘버와 비교해
정답을 도출했다.
2. 코드 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
answer = 0
def solution(numbers, target):
def make(num, now):
global answer
if now == len(numbers):
if num == target:
answer += 1
return
make(num+numbers[now], now+1)
make(num-numbers[now], now+1)
make(0, 0)
return answer
|
cs |
'study > 알고리즘' 카테고리의 다른 글
[python] programmers - 튜플 (0) | 2021.10.25 |
---|---|
[python] programmers - 다리를 지나는 트럭 (0) | 2021.10.23 |
[python] programmers - 가장 먼 노드 (0) | 2021.09.30 |
[python] programmers - 등굣길 (0) | 2021.09.29 |
[python] programmers - N으로 표현 (0) | 2021.09.27 |