후보군을 구하고 knapsack
import sys
input = sys.stdin.readline
N = int(input())
nums = []
num = 0
idx = 1
while num < N:
num += (idx * (idx + 1)) // 2
nums.append(num)
idx += 1
dp = [float('inf')] * (N + 1)
for i in range(1, N + 1):
for num in nums:
if num == i:
dp[i] = 1
break
if num > i: break
dp[i] = min(dp[i], 1 + dp[i - num])
print(dp[N])
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 3273 두 수의 합 (0) | 2021.10.04 |
---|---|
[백준][Python] 17521 Byte Coin (0) | 2021.10.04 |
[백준][Python] 1516 게임개발 (0) | 2021.10.04 |
[백준][Python] 2665 미로만들기 (0) | 2021.10.03 |
[백준][Python] 1535 안녕 : 0 - 1 knapsack (0) | 2021.10.03 |