코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수
programmers.co.kr
다른사람 풀이 - DFS
def solution(numbers, target):
answer = 0
queue = [[numbers[0],0], [-1*numbers[0],0]]
n = len(numbers)
while queue:
temp, idx = queue.pop()
print(temp)
idx += 1
if idx < n:
queue.append([temp+numbers[idx], idx])
queue.append([temp-numbers[idx], idx])
else:
if temp == target:
answer += 1
return answer
다른사람 풀이 2 - BFS
from collections import deque
def solution(numbers, target):
answer = 0
queue = deque()
n = len(numbers)
queue.append([numbers[0],0])
queue.append([-1*numbers[0],0])
while queue:
temp, idx = queue.popleft()
idx += 1
if idx < n:
queue.append([temp+numbers[idx], idx])
queue.append([temp-numbers[idx], idx])
else:
if temp == target:
answer += 1
return answer
다른사람 풀이 3
from itertools import product
def solution(numbers, target):
l = [(x, -x) for x in numbers]
s = list(map(sum, product(*l)))
return s.count(target)
다른사람 풀이 4
def solution(numbers, target):
q = [0]
for n in numbers:
s = []
for _ in range(len(q)):
x = q.pop()
s.append(x + n)
s.append(x + n*(-1))
q = s.copy()
return q.count(target)
'Engineering WIKI > Programmers' 카테고리의 다른 글
[프로그래머스] 최댓값과 최솟값 (0) | 2022.05.17 |
---|---|
[프로그래머스] 카펫 (0) | 2022.05.17 |
[프로그래머스] H-Index (정렬) (0) | 2022.05.13 |
[프로그래머스] 행렬 테두리 회전하기 (0) | 2022.05.10 |
[프로그래머스] 124 나라의 숫자 (0) | 2022.05.04 |
[프로그래머스] 오픈채팅방 (0) | 2022.05.02 |
[프로그래머스] 문자열 압축 (0) | 2022.05.02 |
[프로그래머스] 직사각형 별찍기 (0) | 2022.05.01 |