[알고리즘] 백준 - 1학년

June·2021년 8월 8일
0

알고리즘

목록 보기
227/260
post-custom-banner

문제

백준 - 1학년

다른 사람 풀이

N = int(input())
numbers = list(map(int, input().split())
dp = [[0]*21] # dp[i][j]는 i번째까지 j를 만들 수 있는 경우의 수이다.
dp[0][numbers[0]] = 1

for i in range(1, N):
    cur = numbers[i]
    for j in range(0, 21): #만든 수는 20 이하여야 한다
        if 0 <= j + cur <= 20:
            dp[i][j+cur] += dp[i-1][j]
        if 0 <= j - cur <= 20:
            dp[i][j-cur] += dp[i-1][j]

print(dp[N-2][numbers[N-1])

0개의 댓글