π‘ 쑰건
- 79λ₯Ό μμ΄λ‘ μ½λ μ«μ λ¨μλ‘ νλμ© μ½λλ€λ©΄ "seven nine"μ΄ λλ€. 80μ λ§μ°¬κ°μ§λ‘ "eight zero"λΌκ³ μ½λλ€.
- 79λ 80λ³΄λ€ μμ§λ§, μμ΄λ‘ μ«μ νλμ© μ½λλ€λ©΄ "eight zero"κ° "seven nine"λ³΄λ€ μ¬μ μμΌλ‘ λ¨Όμ μ¨λ€.
- λ¬Έμ λ μ μ M, N(1 ≤ M ≤ N ≤ 99)μ΄ μ£Όμ΄μ§λ©΄ M μ΄μ N μ΄νμ μ μλ₯Ό μ«μ νλμ© μ½μμ λλ₯Ό κΈ°μ€μΌλ‘ μ¬μ μμΌλ‘ μ λ ¬νμ¬ μΆλ ₯νλ κ².
- M μ΄μ N μ΄νμ μ μλ₯Ό λ¬Έμ 쑰건μ λ§κ² μ λ ¬νμ¬ ν μ€μ 10κ°μ© μΆλ ₯νλ€.
- μ λ ¬ μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin
n = int(stdin.readline())
arr = []
num = 0
i = 1
while n > num:
num += (i * (i + 1)) // 2
arr.append(num)
i += 1
dp = [int(1e9) for i in range(n + 1)]
for i in range(1, n + 1):
for num in arr:
if num == i:
dp[i] = 1
break
elif num > i:
break
dp[i] = min(dp[i], 1 + dp[i - num])
print(dp[n])
π μμ λ° μ€νκ²°κ³Ό
μμ
8 28
μ€νκ²°κ³Ό
8 9 18 15 14 19 11 17 16 13
12 10 28 25 24 21 27 26 23 22
20
β¨οΈ λ¬Έμ νμ΄
- dict ν λ³μ d μ κ° μ«μλ§λ€μ μμ΄ λ¬Έμμ΄μ μ μ₯νλ€.
- nλΆν° m + 1 κΉμ§ μν(i)νλ©΄μ iλ₯Ό λ¬Έμμ΄λ‘ λ³ννμ λ κΈΈμ΄λ§νΌ λ μν(j)νλ€.
- s λ°°μ΄μ data[j]λ₯Ό μμ΄ λ¬Έμμ΄λ‘ λ³ν ν λ£μ΄μ€λ€.
- j μνκ° λλλ©΄ s 리μ€νΈμ iλ₯Ό λ¬Έμμ΄λ‘ λ³νν κ°μ μΆκ°ν΄μ€λ€.
- κ·Έ ν, temp λ°°μ΄μ sλ₯Ό ννλ‘ λ§λ€μ΄ μΆκ°νλ€.
- tempλ₯Ό μ λ ¬νκ³ , μ λ ¬λ μ«μκ°μ 10κ°μ© μΆλ ₯νλ€.
πΎ λλμ
- κ·Έλ€μ§ μ΄λ €μ΄ λ¬Έμ κ° μλμλλ°, 볡μ‘νκ² μκ°ν΄μ νλ€μλ λ¬Έμ μμ΅λλ€.