타켓 넘버 - 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 |