μ²μμλ κ·Έλ₯ 쑰건문μ λ§λ€μ΄ 그리λμκ³ λ¦¬μ¦ λ°©μμΌλ‘ κ³μ κ·Έλκ·Έλ μμμλ₯Ό λ§λ€λ©΄μ μ§λ©΄ λ μ€ μμλ€.
νμ§λ§ 10μ μ λ ₯μΌλ‘ λ£μμ λ μμΈκ° λ°μνμκ³ μ°μ μμλ₯Ό μ ν΄λκ³ μ§λ λ°©μμΌλ‘λ νλ©΄ μλκ² λ€λ μκ°μ΄ λ€μλ€.
μμ λ¬Έμ μμ μλν νμ΄λ²μ DP μκ³ λ¦¬μ¦μ μ΄μ©νλ λ°©μμΌλ‘ μ νμμ μ΄μ©νλ κ²μ΄ κ°μ₯ μ’λ€.
DP(λ€μ΄λλ―Ή νλ‘κ·Έλλ°)λ ν° λ¬Έμ λ₯Ό μμ λ¬Έμ λ‘ λλμ΄ νΈλ λ°©λ²μ΄λ€. μ΄ μμ λ¬Έμ λ€μ μ΄λκ°μ μ μ₯ν΄λλλ€. κ·Έλ¦¬κ³ μ΄ μμ λ¬Έμ λ€μ μ΄μ©ν΄μ λ΅μ λμΆν΄λΈλ€.
f(n/2)+1
f(n/3)+1
f(n-1)+1
μ€ μ΅μκ°μ΄ f(n)μ κ°μ΄ λλ€.
λΆνμν μ°μ°μ μ¬λ¬λ² νλ κ²μ λ§κΈ° μν΄ λ¦¬μ€νΈμ μ°μ°νμλ₯Ό μ μ₯ν΄λλλ€.
μλ₯Ό λ€μ΄ 10μ μ λ ₯νμ κ²½μ° λ°°μ΄ μΈλ±μ€ 1λΆν° 10κΉμ§ κ³μ°ν΄ λκ°λ€.
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
x 0 1 1 2 3 2 3 3 2 3
μ΄μ κ°μ΄ μ μ₯μ΄ λλ€.
# DP λ¬Έμ
# min(f(n/3)+1, f(n/2)+1, f(n-1)+1)
def main():
n = int(input())
count_list = [0 for _ in range(n + 1)]
for i in range(1, n + 1):
if i == 1:
count_list[i] = 0
else:
count_list[i] = count_list[i - 1] + 1
if i % 3 == 0 and count_list[i // 3] + 1 < count_list[i]:
count_list[i] = count_list[i // 3] + 1
if i % 2 == 0 and count_list[i // 2] + 1 < count_list[i]:
count_list[i] = count_list[i // 2] + 1
print(count_list[n])
if __name__ == '__main__':
main()
μ½λλ μ΄μ κ°λ€.
'ALGORITHM' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[DFS/BFS] λ°±μ€ 1260 λ¬Έμ νμ΄ (0) | 2020.10.26 |
---|---|
[μ΄μ§νμ] programmers μ κ΅ μ¬μ¬ λ¬Έμ νμ΄ (0) | 2020.10.11 |
[TSP] λ°±μ€ 10971 λ¬Έμ νμ΄ (0) | 2020.09.19 |
[Stack] λ°±μ€ 3986 λ¬Έμ νμ΄ (0) | 2020.09.19 |
[DP] λ°±μ€ 14501 λ¬Έμ νμ΄ (0) | 2020.09.16 |