π λ¬Έμ
λΌκ·Έλμ£Όλ 1770λ μ λͺ¨λ μμ°μλ λ· νΉμ κ·Έ μ΄νμ μ κ³±μμ ν©μΌλ‘ ννν μ μλ€κ³ μ¦λͺ νμλ€. μ΄λ€ μμ°μλ 볡μμ λ°©λ²μΌλ‘ ννλλ€. μλ₯Ό λ€λ©΄, 26μ 52κ³Ό 12μ ν©μ΄λ€; λν 42 + 32 + 12μΌλ‘ ννν μλ μλ€. μμ¬μ μΌλ‘ μμ°μ λͺ μλ€μκ² κ³΅ν΅μ μΌλ‘ μ£Όμ΄μ§λ λ¬Έμ κ° λ°λ‘ μμ°μλ₯Ό λ· νΉμ κ·Έ μ΄νμ μ κ³±μ ν©μΌλ‘ λνλ΄λΌλ κ²μ΄μλ€. 1900λ λ μ΄λ°μ ν μμ°κ°κ° 15663 = 1252 + 62 + 12 + 12λΌλ ν΄λ₯Ό ꡬνλλ° 8μ΄κ° κ±Έλ Έλ€λ λ³΄κ³ κ° μλ€. μ’ λ μ΄λ €μ΄ λ¬Έμ μ λν΄μλ 56μ΄κ° κ±Έλ Έλ€: 11339 = 1052 + 152 + 82 + 52.μμ°μ nμ΄ μ£Όμ΄μ§ λ, nμ μ΅μ κ°μμ μ κ³±μ ν©μΌλ‘ νννλ μ»΄ν¨ν° νλ‘κ·Έλ¨μ μμ±νμμ€.
πμ λ ₯
μ λ ₯μ νμ€μ λ ₯μ μ¬μ©νλ€. μ λ ₯μ μμ°μ nμ ν¬ν¨νλ ν μ€λ‘ ꡬμ±λλ€. μ¬κΈ°μ, 1 ≤ n ≤ 50,000μ΄λ€.
πμΆλ ₯
μΆλ ₯μ νμ€μΆλ ₯μ μ¬μ©νλ€. ν©μ΄ nκ³Ό κ°κ² λλ μ κ³±μλ€μ μ΅μ κ°μλ₯Ό ν μ€μ μΆλ ₯νλ€.
π λ¬Έμ ν΄μ
1 λΆν° 50000μ€ μ νλκ° μ£Όμ΄μ§ λ, μ΅μνμ μ κ³±μμ ν©μΌλ‘ ννν λ μ΄ μ΅μνμ μ κ³±μμ κ°―μλ₯Ό ꡬνλ μ΅μ ν λ¬Έμ μ΄λ€.
μκ°μ νμ΄ 0.5μ΄λ‘ λΉ‘λΉ‘νλ€..(κ·Έλ°λ° μκ³ λ¦¬μ¦ λΆλ₯λ λΈλ£¨νΈν¬μ€ κΆμλ κΆμλ ,,)
μμ μ λ ₯μΈ 26μ μλ‘ λ€λ©΄ 26μ 1**2 + 5**2 μ΄λ κ² λκ°μ μ κ³±μλ‘ ννμ΄ κ°λ₯νμ¬ 2λ₯Ό μΆλ ₯νλ©΄ μ λ΅ νμ μ λ°λλ€.
dp[26] = min(dp[26-1**2], dp[26])
dp[26] = min(dp[26-2**2], dp[26])
dp[26] = min(dp[26-3**2], dp[26])
dp[26] = min(dp[26-4**2], dp[26])
dp[26] = min(dp[26-5**2], dp[26]) λ₯Ό λ°λ³΅νμ¬ μ΅μ κ°μ μ°ΎμλΈλ€.
π» μ½λ
n = int(input())
dp = [i for i in range(n+1)] # dp ν
μ΄λΈ μ΄κΈ°ν
for i in range(1,n+1): # dp ν
μ΄λΈ 1λΆν° nκΉμ§ μ°¨λ‘λλ‘ κ°±μ
for j in range(1,int(i**0.5)+1): # 1λΆν° iμ μ κ³±κ·ΌκΉμ§
if 0<=i-j**2: # i-j**2μ΄ dp ν
μ΄λΈ λ²μ λ΄λΌλ©΄, μ¦ i-j**2μ΄ μμ°μλΌλ©΄
dp[i] = min(dp[i-j**2]+1,dp[i]) # i-j**2μμ j**2λ₯Ό λνκ²κ³Ό νμ¬ dp[i]μ λΉκ΅ν κ°±μ
print(dp[n])
π μνμ°©μ€
μ¬μ€ κΈμ μ 리νλ€κ° μκ°μ μ€μΌ μ μλ λ°©λ²(forλ¬Έμ μ‘°κΈ λ리λ λ°©λ²) μ΄ μκ°λμ μ μΆνκ³ μλλ°, νμ΄μ¬μ μ¬μ ν μκ° μ΄κ³Όγ μκ³ , pypyλ κ·Έλλ μκ°μ΄ μ‘°κΈ λΉ¨λΌμ‘λ€.
νμ΄μ¬μΌλ‘λ μκ°μ΄κ³Ό μ λ°μΌλ €κ³ μλν΄λ³΄μμ§λ§ μ€ν¨^!^
κ·Έλλ dp μ νμ μ΄μκ² μΈμμ μμ½λ© 39μμ λν¬λμλ€..
λ³κ²½μ
for i in range(1,n+1):
for j in range(1,int(n**0.5)+1):
if 0<=i-j**2:
dp[i] = min(dp[i-j**2]+1,dp[i])
λ³κ²½ν
for i in range(1,n+1):
for j in range(1,int(i**0.5)+1):
if 0<=i-j**2:
dp[i] = min(dp[i-j**2]+1,dp[i])
λλ²μ§Έ forλ¬Έμ nμ μ κ³±κ·ΌκΉμ§κ° iμ μ κ³±κ·ΌκΉμ§λ‘ λ°λμλ€γ
π λ¬Έμ λ§ν¬ Four Squares
'Problem Solving > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1260λ²: DFSμ BFS - νμ΄μ¬ (0) | 2022.06.25 |
---|---|
[λ°±μ€] 1389λ²: μΌλΉ λ² μ΄μ»¨μ 6λ¨κ³ λ²μΉ - νμ΄μ¬ (0) | 2022.06.23 |
[λ°±μ€] 11403λ²: κ²½λ‘ μ°ΎκΈ° - νμ΄μ¬ (0) | 2022.06.19 |
[λ°±μ€] 5430λ²: AC - νμ΄μ¬ (0) | 2022.06.16 |
[λ°±μ€] 13023λ²: ABCDE - νμ΄μ¬ (0) | 2022.06.15 |