Skip to content

Commit f73af46

Browse files
committed
[PGS] 타겟넘버 - deque 를 이용한 풀이 / Level 2 / 30분 / 성공
1 parent 2494ee8 commit f73af46

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
'''
2+
타겟넘버 - deque를 이용한 BFS 풀이
3+
'''
4+
from collections import deque
5+
6+
def solution(numbers, target):
7+
answer = 0
8+
queue = deque()
9+
n = len(numbers)
10+
# 초기 상태를 큐에 추가. 시작 숫자에서 +와 - 두 가지 경우를 모두 추가
11+
# (이때 인덱스값도 함께 추가) [값, 인덱스] (enqueue 작업)
12+
queue.append([numbers[0], 0]) # 첫 번째 숫자를 더한 경우
13+
queue.append([-1*numbers[0], 0]) # 첫 번째 숫자를 뺀 경우
14+
15+
# 큐가 빌 때까지 반복
16+
while queue:
17+
temp, index = queue.popleft() # dequeue. 큐에서 값을 꺼내서 현재 합과 인덱스 가져옴
18+
index += 1 # 다음 인덱스로 넘어감
19+
# 인덱스가 리스트의 길이보다 작다면,
20+
if index < n:
21+
# 현재 합에 다음 숫자를 더하거나 빼는 두 가지 경우를 큐에 추가
22+
queue.append([temp + numbers[index], index])
23+
queue.append([temp - numbers[index], index])
24+
else: # 다 순회했다면 temp 값과 target값 비교
25+
if temp == target:
26+
answer += 1
27+
return answer
28+
29+
# 예제 1: 숫자 배열 [1, 1, 1, 1, 1]로 목표 값 3을 만드는 방법의 수
30+
numbers = [1, 1, 1, 1, 1]
31+
target = 3
32+
print(solution(numbers, target)) # 결과: 5
33+
34+
# 예제 2: 숫자 배열 [4, 1, 2, 1]로 목표 값 4를 만드는 방법의 수
35+
numbers = [4, 1, 2, 1]
36+
target = 4
37+
print(solution(numbers, target)) # 결과: 2

0 commit comments

Comments
 (0)