๋ฐฑ์ค 1463๋ฒ ๋ฌธ์ ์ธ “1๋ก ๋ง๋ค๊ธฐ” ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ฃผ์ด์ง ์ ์ N์ 1๋ก ๋ง๋ค๊ธฐ ์ํด ํ์ํ ์ต์ํ์ ์ฐ์ฐ ํ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ๋ก, ๋์ ๊ณํ๋ฒ(Dynamic Programming)์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ๋ถ์ํ๊ณ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ ํ, ์ต์ข ์ ์ธ ์ ๋ต ์ฝ๋๋ฅผ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์ URL: https://www.acmicpc.net/problem/1463
1. ๋ฌธ์ ์ค๋ช
๋ฐฑ์ค 1463๋ฒ ๋ฌธ์ “1๋ก ๋ง๋ค๊ธฐ”๋ ์ฃผ์ด์ง ์ ์ N์ 1๋ก ๋ง๋ค๊ธฐ ์ํด ์ต์ํ์ ์ฐ์ฐ์ ์ฌ์ฉํ๋ ๋ฌธ์ ์ ๋๋ค. ๊ฐ๋ฅํ ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. N์ด 3์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ฉด, 3์ผ๋ก ๋๋๊ธฐ.
2. N์ด 2๋ก ๋๋์ด ๋จ์ด์ง๋ฉด, 2๋ก ๋๋๊ธฐ.
3. 1์ ๋นผ๊ธฐ.
๊ฐ๊ฐ์ ์ฐ์ฐ์ ํตํด N์ 1๋ก ๋ง๋๋ ๋ฐ ํ์ํ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค.
2. ๋ฌธ์ ์ ๊ทผ๋ฒ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์ ๊ณํ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ํต์ฌ ์์ด๋์ด๋ ์ฃผ์ด์ง ์ N์ ๋ํด 1๋ก ๋ง๋ค๊ธฐ ์ํ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ๋ฏธ๋ฆฌ ๊ณ์ฐํ๊ณ ์ ์ฅํ์ฌ, ๊ทธ ๊ฐ์ ์ฌ์ฉํด ๋ ํฐ ์์ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ์ฝ๊ฒ ๊ตฌํ๋ ๊ฒ์ ๋๋ค. ์ ๊ทผ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- DP ๋ฐฐ์ด ์ฌ์ฉ: ์ต์ ์ฐ์ฐ ํ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด dArr๋ฅผ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์ dArr[i]๋ ์ซ์ i๋ฅผ 1๋ก ๋ง๋๋ ๋ฐ ํ์ํ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ์ ์ฅํฉ๋๋ค.
- ์ด๊ธฐ๊ฐ ์ค์ : N์ด 1์ธ ๊ฒฝ์ฐ ์ฐ์ฐ ํ์๋ 0์ ๋๋ค(dArr[1] = 0).
- ๋ฐ๋ณต์ ๊ณ์ฐ: 2๋ถํฐ N๊น์ง์ ๊ฐ ์ซ์ i์ ๋ํด ๊ฐ๋ฅํ ์ฐ์ฐ์ ์๋ํฉ๋๋ค. ๊ฐ ์ฐ์ฐ ํ์ ์ซ์์ ๋ํด ์ด๋ฏธ ๊ณ์ฐ๋ ์ต์ ์ฐ์ฐ ํ์์ 1์ ๋ํ ๊ฐ๊ณผ ํ์ฌ ๊ฐ dArr[i]๋ฅผ ๋น๊ตํ์ฌ ๋ ์์ ๊ฐ์ ์ ์ฅํฉ๋๋ค.
- ์ต์ ํด ๋์ถ: ์ต์ข ์ ์ผ๋ก dArr[N]์ด ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ ๋ต์ด ๋ฉ๋๋ค.
3. ์ ๋ต ์ฝ๋
import sys
input = sys.stdin.readline
# ์ ์ N์ ์
๋ ฅ ๋ฐ์ต๋๋ค.
N = int(input())
# ์ต์ ์ฐ์ฐ ํ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด์ N+1 ํฌ๊ธฐ๋ก ์ด๊ธฐํํฉ๋๋ค.
# ์ธ๋ฑ์ค 0์ ์ฌ์ฉ๋์ง ์์ผ๋ฏ๋ก N+1 ํฌ๊ธฐ๋ก ์ค์
dArr = [0] * (N+1)
# 1์ ์ฐ์ฐ ํ์ ์์ (0๋ฒ์ ์ฐ์ฐ์ผ๋ก ๊ฐ๋ฅ)
dArr[1] = 0
# 2๋ถํฐ N๊น์ง ์ํํ๋ฉด์ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ๊ณ์ฐ
for i in range(2, N+1):
# ๊ธฐ๋ณธ์ ์ผ๋ก 1์ ๋นผ๋ ์ฐ์ฐ์ ๊ฐ์
dArr[i] = 1 + dArr[i-1]
# 3์ผ๋ก ๋๋์ด ๋จ์ด์ง ๋, 3์ผ๋ก ๋๋๋ ์ฐ์ฐ์ ๊ณ ๋ ค
if i % 3 == 0:
cnt = 1 + dArr[i // 3]
# 3์ผ๋ก ๋๋๋ ๊ฒ์ด ๋ ์ ์ ์ฐ์ฐ์ ํ์๋ก ํ ๊ฒฝ์ฐ ์
๋ฐ์ดํธ
dArr[i] = min(cnt, dArr[i])
# 2๋ก ๋๋์ด ๋จ์ด์ง ๋, 2๋ก ๋๋๋ ์ฐ์ฐ์ ๊ณ ๋ ค
if i % 2 == 0:
cnt = 1 + dArr[i // 2]
# 2๋ก ๋๋๋ ๊ฒ์ด ๋ ์ ์ ์ฐ์ฐ์ ํ์๋ก ํ ๊ฒฝ์ฐ ์
๋ฐ์ดํธ
dArr[i] = min(cnt, dArr[i])
# N์ 1๋ก ๋ง๋๋ ๋ฐ ํ์ํ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ์ถ๋ ฅ
print(dArr[N])
4. ์ฝ๋ ์ค๋ช
์ ์ฝ๋๋ ์ฃผ์ด์ง N์ 1๋ก ๋ง๋ค๊ธฐ ์ํด ํ์ํ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ๋์ ๊ณํ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ณ์ฐํฉ๋๋ค. dArr ๋ฐฐ์ด์ ๊ฐ ์ซ์์ ๋ํด 1๋ก ๋ง๋ค๊ธฐ ์ํ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ์ ์ฅํ๋ฉฐ, ๋ฐ๋ณต๋ฌธ์ ํตํด 1์ ๋นผ๋ ์ฐ์ฐ, 2๋ก ๋๋๋ ์ฐ์ฐ, 3์ผ๋ก ๋๋๋ ์ฐ์ฐ์ ๊ณ ๋ คํ์ฌ ์ต์๊ฐ์ ๊ฐฑ์ ํฉ๋๋ค.
5. Github์ผ๋ก ํ์ธ
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ(๋ฐฑ์ค)_Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ(๋ฐฑ์ค) 1766[๋ฌธ์ ์ง] (0) | 2024.08.05 |
---|---|
BOJ(๋ฐฑ์ค) 2579[๊ณ๋จ ์ค๋ฅด๊ธฐ] (0) | 2024.08.02 |
BOJ(๋ฐฑ์ค) 4179[๋ถ!] (0) | 2024.07.29 |
BOJ(๋ฐฑ์ค) 1753[์ต๋จ๊ฒฝ๋ก] (0) | 2024.07.26 |
BOJ(๋ฐฑ์ค) 11725[ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ] (0) | 2024.07.25 |