본문 바로가기
공부-코딩테스트/코테풀이 - 자바, 파이썬

타겟 넘버 (코딩테스트, 프로그래머스)

by 령과 2022. 1. 19.

문제

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

나의 코드

import collections
def solution(numbers, target):
    answer = 0
    
    answer_list=collections.deque([numbers[0],-numbers[0]])
    
    for i in numbers[1:]:
        for j in range(len(answer_list)):
            tmp=answer_list.popleft()
            answer_list.append(tmp+i)
            answer_list.append(tmp-i)
    for i in answer_list:
        if i==target:
            answer+=1
    return answer

단순히 +, -를 하여 만들 수 있는 모든 경우의 수를 answer_list에 저장하고 마지막에 target과 같은 값을 count하는 식으로 문제를 해결하였다.

 

answer_list에 처음에 numbers의 첫번째 값을 +, -한 값을 저장,

numbers의 두번째 값부터 시작하는 for문으로 answer_list의 값 하나씩 불러와서 +한 값, -한 값을 다시 deque에 추가,

 

댓글