[프로그래머스 LV2] 타겟 넘버

Junyoung Park·2021년 12월 24일
0

코딩테스트

목록 보기
21/631

1. 문제 설명

타겟 넘버

2. 문제 분석

각 원소마다 +/-를 모두 적용해본 뒤 그 결과값을 target과 비교해야 하므로 디큐를 활용하면 편리하다. 첫 번째 즉 idx=0 원소에 +/-를 적용해 디큐에 넣고 디큐가 빌 때까지 idx를 하나씩 추가해 주어진 numbers 리스트의 끝에 도달할 때까지 넣고/빼기를 반복한다. 이런 유형을 접했을 때 자연스럽게 DFS → 디큐 등을 떠올릴 수 있도록 익숙해지자!

3. 나의 풀이

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:
        total, idx = queue.popleft()
        idx += 1
        if idx<n:
            queue.append([total+numbers[idx], idx])
            queue.append([total-numbers[idx], idx])
        else:
            if total == target: answer += 1
    return answer
profile
JUST DO IT

0개의 댓글