1N = int(input())
2L = list(map(int, input().split()))
3dp = [[0]*21 for _ in range(N-1)]
4
5dp[0][L[0]] = 1
6
7for i in range(0, N-2):
8 for j in range(21):
9 if dp[i][j] != 0:
10 k = L[i+1]
11 if k != 0:
12 if 0 <= j+k <= 20:
13 dp[i+1][j+k] += dp[i][j]
14 if 0 <= j-k <= 20:
15 dp[i+1][j-k] += dp[i][j]
16 else:
17 dp[i+1][j] = dp[i][j]*2
18print (dp[N-2][L[-1]])
- 혼자 힘으로 풀었다!
- 이전에 비슷한 dp 문제를 풀어본 적이 있어서 쉽게 풀 수 있었다