πŸ—οΈ Algorithm/🟩 λ°±μ€€

🟩 [λ°±μ€€] [Python] [Silver2] 1699번_제곱수의 ν•©

Dbswnstjd 2023. 3. 5. 22:52

문제

https://www.acmicpc.net/problem/1699

 

1699번: 제곱수의 ν•©

μ–΄λ–€ μžμ—°μˆ˜ N은 그보닀 μž‘κ±°λ‚˜ 같은 μ œκ³±μˆ˜λ“€μ˜ ν•©μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ 11=32+12+12(3개 ν•­)이닀. 이런 ν‘œν˜„λ°©λ²•μ€ μ—¬λŸ¬ 가지가 될 수 μžˆλŠ”λ°, 11의 경우 11=22+22+12+12+12(5개 ν•­)도 κ°€λŠ₯ν•˜λ‹€

www.acmicpc.net

풀이

n = int(input())
 
dp = [i for i in range (n+1)]
 
for i in range(1, n+1):
    for j in range(1, i):
        if (j * j) > i:
            break
        if dp[i] > dp[i - j * j] + 1:
            dp[i] = dp[i - j * j] + 1
 
print(dp[n])