์ฒ์์ ์ ๋ ฅ๊ฐ์ด ๋๋ฌด ์ปค์ ์์๋๋ก ํ๋ฉด ๋ฌด์กฐ๊ฑด ์๊ฐ์ด๊ณผ ๋ ์ค ์๊ณ ๊ฒ๋จน์๋ค
๊ทผ๋ฐ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ๋ ์ค๋ฅด์ง ์์์ ์ผ๋จ ์ด์ dp๋ฌธ์ ๋ค์ฒ๋ผ ํ์ด๋ด
๋ฆฌ์คํธ์ ๊ฐ ์ซ์๊ฐ ์ ๋ ฅ๋์์ ๋์ ์ต์ ์ฐ์ฐ ์๋ฅผ ์ ์ฅํ ๊ฒ!
๊ทธ ์ซ์๋ 1์ ๋นผ๊ฑฐ๋, 3์ผ๋ก ๋๋๊ฑฐ๋, 2๋ก ๋๋ ์ผ ํ๋ค.
๊ทธ๋ฐ๋ฐ ์ฐ์ฐ ํ์์ ์ต์๊ฐ์ ๊ตฌํด์ผ ํ๋๊น
1์ ๋นผ๊ฑฐ๋, 3์ผ๋ก ๋๋๊ฑฐ๋, 2๋ก ๋๋ด์ ๋ ์ค ๊ฐ์ฅ ์์ ์ฐ์ฐ ํ์๋ฅผ ๊ฐ์ง ์ฐ์ฐ์ ํํ๋ฉด ๋๋ค.
f(n) = min(f(n-1), f(n//3), f(n//2)) + 1
1. ๋ฆฌ์คํธ num์ ๋ฏธ๋ฆฌ n๊ฐ์ 0์ ๋ฃ์ด๋๊ณ num[2], num[3]์๋ 1์ ์ ์ฅ
2. 4๋ถํฐ n๊น์ง ๋ฐ๋ณต๋ฌธ์ ํตํด ๊ฐ์ ๋ฃ์ ๊ฒ
2-1. num[i]์ num[i-1] + 1์ ์ ์ฅ ( i๊ฐ 2๋ 3์ผ๋ก ๋๋์ด์ง์ง ์๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ )
2-2. i๊ฐ 3์ผ๋ก ๋๋์ด์ง๋ฉด num[i]์ num[i//3]+1 ์ ๋น๊ตํ์ฌ ๋ ์์ ์๋ฅผ ์ ์ฅ
( ์ด๋ฏธ num[i]์๋ num[i-1] + 1์ด ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ )
2-3. i๊ฐ 2๋ก ๋๋์ด์ง๋ฉด num[i]์ num[i//2]+1 ์ ๋น๊ตํ์ฌ ๋ ์์ ์๋ฅผ ์ ์ฅ
( ์ด๋ฏธ num[i]์๋ num[i-1] + 1 ๋๋ num[i//3]+1 ์ด ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ )
3. num[n]์ ์ถ๋ ฅ
# 1463.py
n = int(input())
num = [0, 0, 1, 1] + [0 for _ in range(n-3)]
for i in range(4, n+1):
num[i] = num[i-1] + 1
if i % 3 == 0:
num[i] = min(num[i], num[i//3] + 1)
if i % 2 == 0:
num[i] = min(num[i], num[i//2] + 1)
print(num[n])