-
[프로그래머스] 타겟넘버Engineering WIKI/Programmers 2022. 5. 6. 14:20
코딩테스트 연습 - 타겟 넘버
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