bong-u/til

백준 - 5557 : 1학년 (G5)

수정일 : 2024-11-15

 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 문제를 풀어본 적이 있어서 쉽게 풀 수 있었다