[백준] 5557번 1학년 ★

거북이·2023년 9월 4일
0

백준[골드5]

목록 보기
70/82
post-thumbnail

💡문제접근

  • 2차원 배열을 이용해서 문제를 해결할 수 있었다.

💡코드(메모리 : 31256KB, 시간 : 40ms)

import sys
input = sys.stdin.readline

N = int(input())
dp = [[0] * 21 for _ in range(N-1)]
array = list(map(int, input().strip().split()))
dp[0][array[0]] = 1

# 6, 4, 2, 3, 2, 4
for i in range(1, N-1):
    for j in range(21):
        # 6
        if dp[i-1][j]:
            # 6 + 4 = 10
            if j + array[i] <= 20:
                dp[i][j + array[i]] += dp[i-1][j]
            # 6 - 4 = 2
            if j - array[i] >= 0:
                dp[i][j - array[i]] += dp[i-1][j]
print(dp[-1][array[-1]])

💡소요시간 : 47m

0개의 댓글