BOJ / 1463 / 1λ‘ λ§λ€κΈ° / Python
Updated:
μ΄μ μ νμλ λ¬Έμ μΈλ° λͺ» νμλ€.
κΈ°λ‘μ 보λ μ΄μ μλ λͺ» νμ΄μ κ²°κ΅ κ΅¬κΈλ§μΌλ‘ ν΄κ²°νλ λ¬Έμ μλ€.
μμλ 머리μ μ무κ²λ μ λ¨μλ κ±°λ€ .. !
βοΈπ
μ²μμ μ¬κ·λ‘ νλ €λ€κ° μκ°μ΄κ³Όκ° κ³μ λ΄λ€. DPλ‘ ν΄κ²°ν΄μΌ νλ λ¬Έμ λΌκ³ νλ€.
Dynamic Programming
λ€μ΄λλ―Ή νλ‘κ·Έλλ°μ λ€μμ 쑰건μ λ§μ‘±ν λ μ¬μ©ν μ μλ€.
- ν° λ¬Έμ λ₯Ό μμ λ¬Έμ λ‘ λλ μ μλ€.
- μμ λ¬Έμ μμ ꡬν μ λ΅μ κ·Έκ²μ ν¬ν¨νλ ν° λ¬Έμ μμλ λμΌνλ€.
Memoization λ€μ΄λλ―Ή νλ‘κ·Έλλ°μ ꡬννλ λ°©λ² μ€ νλλ‘, ν λ² κ΅¬ν κ²°κ³Όλ₯Ό λ©λͺ¨λ¦¬ 곡κ°μ λ©λͺ¨ν΄λκ³ κ°μ μμ λ€μ νΈμΆνλ©΄ λ©λͺ¨ν κ²°κ³Όλ₯Ό κ·Έλλ‘ κ°μ Έμ€λ κΈ°λ²μ μλ―Ένλ€. βμΊμ±β μ΄λΌκ³ λ νλ€.
리μ€νΈλ‘ ꡬννλ€.
λ€μ΄λλ―Ή νλ‘κ·Έλλ°μ μ¬κ·μ μΌλ‘ μννλ€κ° κ°μ μ λ³΄κ° νμν λμ 리μ€νΈμμ κ°μ κ·Έλλ‘ κ°μ Έμ¨λ€.
π» code
import sys
sys.setrecursionlimit(10**7)
input = sys.stdin.readline
X = int(input())
dp = [0] * (X + 1)
for i in range(2, X+1):
# μ°μ -1 μ°μ°μ νλ κ²½μ°λ₯Ό λ£μ΄λλ€.
dp[i] = dp[i-1] + 1
if i % 2 == 0:
dp[i] = min(dp[i], dp[i // 2] + 1)
if i % 3 == 0:
dp[i] = min(dp[i], dp[i // 3] + 1)
print(dp[-1])
ν¬κΈ° X+1μΈ dp 리μ€νΈλ₯Ό μ€λΉνλ€.
μ΄λ dpλ κ° ν΄λΉ μΈλ±μ€ μ«μκ° 1μ΄ λλ μ΅μ νμλ₯Ό λ΄κ² λλ€.
μλ₯Ό λ€μ΄ dp[3]μ μ«μ 3μ΄ 1μ΄ λλ μ΅μ νμλ€.
μ μ Xκ° 10μΈ κ²½μ°λ₯Ό μ΄ν΄λ³΄λ©΄
10μ 1λ‘ λ§λλ μ΅μ νμλ
1. 9(= 10 - 1)κ° 1μ΄ λλ μ΅μ νμ + 1 (10 - 1 μ°μ°)
λλ
2. 5( = 10 // 2)κ° 1μ΄ λλ μ΅μ νμ + 1 (10 // 2 μ°μ°)
1, 2 κ° μ€ λ μμ κ°μ΄ λλ€.
μμλ‘ λ 10μ 3μΌλ‘ λλμ΄μ§μ§ μμμ§λ§ λ§μ½ 3μΌλ‘ λλμ΄ λ¨μ΄μ§λ μ«μλΌλ©΄
3. μ
λ ₯μ«μ//3 μ΄ 1μ΄ λλ μ΅μ νμ + 1 (μ
λ ₯μ«μ // 3 μ°μ°)
μ΄ μΆκ°λλ©° 1, 2, 3 μ€μμ μ΅μκ°μ ꡬνλ©΄ λλ€.
Reference
- λλλΉ, βμ΄κ²μ΄ μ·¨μ μ μν μ½λ© ν μ€νΈλ€ with νμ΄μ¬β
Leave a comment