ν°μ€ν 리 λ·°
728x90
λ°μν
λ¬Έμ
λ¬Έμ νμ΄
μμ°μ Nμ΄ μ£Όμ΄μ§λ©΄ ν΄λΉ μλ₯Ό μ κ³±μλ€μ ν©μΌλ‘ λνλΌ λ νμ μ΅μ κ°μλ₯Ό ꡬνλ λ¬Έμ μ΄λ€. Nμ λ°λΌμ νμ μ΅μ κ°μλ₯Ό λΉκ΅νλ©΄ λ¬Έμ λ₯Ό μ½κ² ν μ μλ€.
N | ν | νμ μ΅μ κ°μ |
0 | μμ | 0 |
1 | 1 ^ 2 | 1 |
2 | 1 ^ 2 + 1 ^ 2 | 2 |
3 | 1 ^ 2 + 1 ^ 2 + 1 ^ 2 | 3 |
4 | 2 ^ 2 | 1 |
5 | 2 ^ 2 + 1 ^ 2 | 2 |
6 | 2 ^ 2 + 1 ^ 2 + 1 ^ 2 | 3 |
7 | 2 ^ 2 + 1 ^ 2 + 1 ^ 2 + 1 ^ 2 | 4 |
8 | 2 ^ 2 + 2 ^ 2 | 2 |
9 | 3 ^ 2 | 1 |
μμ κ°μ΄ Nμ΄ μ¦κ°ν¨μ λ°λΌ κ·μΉμ±μ κ°λ κ²μ μ μ μλ€. μ΄λ‘μ¨ μ νμμ f(n) = min(f(n), f(κ°λ₯ν μ΅λμ κ³±μ) + 1)κ° λλ€λ κ²μ μ μ μλ€. νμ μ νμμ΄ μ΄ν΄κ° μλμ§ μλλΌλ μ½λλ₯Ό λ³΄κ³ μ΄ν΄ν μ μλ€.
μ½λ
from sys import stdin
if __name__ == '__main__':
n = int(stdin.readline())
answer = [0] * (n + 1)
for i in range(1, n + 1):
answer[i] = i
for j in range(1, i):
if j * j > i:
break
if answer[i] > answer[i - j * j] + 1:
answer[i] = answer[i - j * j] + 1
print(answer[n])
9μΈ κ²½μ° κ³μ°λλ κ³Όμ μ 보면, λ€μκ³Ό κ°λ€.
- λ°λ³΅λ¬Έμ μμνλ©΄, 9μ μΈλ±μ€λ‘ μ΄κΈ°ν νλ€. (μ΄λ λͺ¨λ 1^2μΌλ‘ λνλμ μλ―Ένλ€)
-
jλ₯Ό μ¦κ° μν€λ©΄μ 9μ κ²½μ° 2^2, 3^3μ κ²½μ°μ μλ‘ λ μ μλ€.
- [9 - 2^2] + 1μ N:5 + 1μ μλ―Ένλ€ μ¦ 2^2 + 2^2 + 2^1μ μλ―Ένλ€.
- [9 - 3^2] + 1μ N:0 + 1μ μλ―Ένλ€. μ¦ 3^2λ₯Ό μλ―Ένλ€.
- 9, 3, 1 μ€ μ΅μ κ°μ 1μ΄λ―λ‘ 9λ₯Ό λνλΌ μ μλ μ κ³±μ νμ μ΅μ κ°μ μ°Ύμ μμλ€.
728x90
λ°μν
'π¨βπ» μ½λ©ν μ€νΈ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€: 1309 λλ¬Όμ (0) | 2020.07.02 |
---|---|
λ°±μ€: 15988 1, 2, 3 λνκΈ° 3 (0) | 2020.07.02 |
λ°±μ€: 1912 μ°μν© (0) | 2020.07.01 |
λ°±μ€: 14002 κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄ 4 (2) | 2020.07.01 |
λ°±μ€: 11053 κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄ (0) | 2020.06.30 |
λκΈ
κΈ λ³΄κ΄ν¨
μ΅κ·Όμ μ¬λΌμ¨ κΈ
μ΅κ·Όμ λ¬λ¦° λκΈ