Computer Science/Algorithm
[Baekjoon] DP - 1699 제곱수의 합
ddu0422
2023. 9. 25. 11:32
문제
1699번: 제곱수의 합
어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다
www.acmicpc.net
풀이
n = int(input())
def solution(n):
d = list(range(n + 1))
for i in range(1, n + 1):
for j in range(int(i ** .5), 0, -1):
if i == j * j:
d[i] = 1
elif i > j * j:
d[i] = min(d[i - j * j] + d[j * j], d[i])
return d[n]
print(solution(n))
채점 결과