๋ฌธ์
์ ์ X์ ์ฌ์ฉํ ์ ์๋ ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ ๊ฐ์ง ์ด๋ค.
- X๊ฐ 3์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ฉด, 3์ผ๋ก ๋๋๋ค.
- X๊ฐ 2๋ก ๋๋์ด ๋จ์ด์ง๋ฉด, 2๋ก ๋๋๋ค.
- 1์ ๋บ๋ค.
์ ์ N์ด ์ฃผ์ด์ก์ ๋, ์์ ๊ฐ์ ์ฐ์ฐ ์ธ ๊ฐ๋ฅผ ์ ์ ํ ์ฌ์ฉํด์ 1์ ๋ง๋ค๋ ค๊ณ ํ๋ค. ์ฐ์ฐ์ ์ฌ์ฉํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 106๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์ N์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฐ์ฐ์ ํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
https://www.acmicpc.net/problem/1463
๐ก ํ์ด ๋ฐ ์ฝ๋
x = int(input())
d = [0] * (x+1)
for i in range(2, x+1):
d[i] = d[i-1] + 1
if i % 3 == 0:
d[i] = min(d[i], d[i//3]+1)
if i % 2 == 0:
d[i] = min(d[i], d[i//2]+1)
print(d[x])
๊ธฐ์ด์ ์ธ DP(๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ) ๋ฌธ์ ์ด๋ค.
์ ๋ ฅ๋ฐ์ x๋ฅผ 1๋ก ๋ง๋ค๊ธฐ ์ํด์ ํ ์ ์๋ ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ๋ค.
- 3์ผ๋ก ๋๋ ๋จ์ด์ง ๊ฒฝ์ฐ : 3์ผ๋ก ๋๋๊ธฐ or 1 ๋นผ๊ธฐ
- 2๋ก ๋๋ ๋จ์ด์ง ๊ฒฝ์ฐ : 2๋ก ๋๋๊ธฐ or 1 ๋นผ๊ธฐ
- ๋๋ ๋จ์ด์ง์ง ์์ ๊ฒฝ์ฐ : 1๋นผ๊ธฐ
๋ฐ๋ผ์ ์ฐ์ฐ ํ์๋ฅผ ์ ์ฅํ DP ํ ์ด๋ธ์ ๋ง๋ ํ, ์ฐ์ 2๋ถํฐ x๊น์ง์ ์ i์ ๋ํ์ฌ ( i-1์ ์ฐ์ฐํ์ )+1์ i์ ์ฐ์ฐํ์๋ก ์ง์ ํ๊ณ , i๊ฐ 3์ผ๋ก ๋๋์ด ๋จ์ด์ง ๊ฒฝ์ฐ i์ ์ฐ์ฐํ์์ ( i//3์ ์ฐ์ฐํ์ )+1 ์ค ์์ ๊ฐ์ i์ ์ฐ์ฐํ์๋ก DP ํ ์ด๋ธ์ ์ ์ฅํ๋ค. i๊ฐ 2๋ก ๋๋ ์ง ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ์ต์ข ์ ์ผ๋ก, DP ํ ์ด๋ธ์ ์ ์ฅ๋ x์ ์ฐ์ฐํ์๋ x๋ฅผ 1๋ก ๋ง๋ค๊ธฐ ์ํ ์ฐ์ฐ ์ต์๊ฐ์ด๋ค.
'Algorithm > ๐ Baekjoon Judge' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ๋ฐฑ์ค 2579๋ฒ ๊ณ๋จ ์ค๋ฅด๊ธฐ - ํ์ด์ฌ(Python) (0) | 2021.09.14 |
---|---|
[BOJ] ๋ฐฑ์ค 1149๋ฒ RGB๊ฑฐ๋ฆฌ - ํ์ด์ฌ(Python) (0) | 2021.09.14 |
[BOJ] ๋ฐฑ์ค 16953๋ฒ A๋ฅผ B๋ก ๋ฐ๊พธ๊ธฐ (A->B) - ํ์ด์ฌ(Python) (0) | 2021.08.26 |
[BOJ] ๋ฐฑ์ค 1715๋ฒ ์นด๋ ์ ๋ ฌํ๊ธฐ - ํ์ด์ฌ(Python) (0) | 2021.08.26 |
[BOJ] ๋ฐฑ์ค 1789๋ฒ ์๋ค์ ํฉ - ํ์ด์ฌ(Python) (0) | 2021.08.26 |