https://www.acmicpc.net/problem/1699
pseudo code
dp 배열을 만든다
dp[i]에는 dp[i-1]과 dp[i-n^2]들을 비교해서 최솟값을 할당한다
dp[-1]을 출력한다
import math
n = int(input())
dp = [0] * (n+1)
for i in range(1, n+1):
a = math.floor(i**0.5)
dp[i] = min(dp[i-1]+1, dp[i-a**2]+1)
for j in range(a):
dp[i] = min(dp[i], dp[i-j**2]+1)
print(dp[-1])
'백준 알고리즘' 카테고리의 다른 글
파이썬) 백준 알고리즘 | 9661번 : 돌 게임 7 (0) | 2022.06.30 |
---|---|
파이썬) 백준 알고리즘 | 9660번 : 돌 게임 6 (0) | 2022.06.30 |
파이썬) 백준 알고리즘 | 1912번 : 연속합 (0) | 2022.06.30 |
파이썬) 백준 알고리즘 | 11726번 : 2×n 타일링 (0) | 2022.06.30 |
파이썬) 백준 알고리즘 | 16120번 : PPAP (0) | 2022.06.30 |
댓글