코딩 테스트 준비
타켓 넘버 - 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
반응형