타켓 넘버 - level2

2023. 1. 7. 14:41코딩 테스트 준비

728x90
반응형
def solution(numbers, target):
    answer = 0
    dp = [0]
    for i in numbers:
        temp = []
        for j in dp:
            temp.append(j+i)
            temp.append(j-i)
        dp = temp
    return dp.count(target)

 

생각해보면 각 인덱스의 값을 -와 +로 나눠가면서 더하는 트리처럼 뻗어나가는 형식의 문제이다.

 

< 1,1,1,1,1 일 경우 >

 

첫번째 인덱스 값에 0가 -와 +를 한 값을 temp에 넣는다. 이후 dp에 값을 다시 넣어주면  -1과 +1이 들어가 있을 것이다. 

 

두번째 인덱스 값에 -1과 1에 각각 -와 +한 값을 넣는다. 그럼 -2, 0, 2, 0이 temp에 들어갈 것이다. 다시 dp에 temp를 덮어씌운다.

 

이 과정을 반복하면 결국 가장 마지막의 모든 경우의 결과가 들어갈 것이다. 그 값중 target의 값만 카운팅 해주면 된다.

 

BFS와 같이 계산된 값을 내부에 넣고 하나씩 뺴서 계산한 결과를 다시 넣고를 반복하는 방식을 이용했다.

728x90
반응형

'코딩 테스트 준비' 카테고리의 다른 글

1,2,3 더하기 4 – 실버 1  (0) 2023.01.07
퇴사 2 - 골드 5  (0) 2023.01.07
가장 긴 감소하는 부분 순열 – 실버2  (0) 2023.01.06
계단 오르기 – 실버3  (0) 2023.01.06
게임맵 최단거리 - level2  (0) 2023.01.06