[์๊ณ ๋ฆฌ์ฆ] #03 ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ-1๋ก ๋ง๋ค๊ธฐ
๐ '1๋ก ๋ง๋ค๊ธฐ' ๋ฌธ์
๐ง ๋ฌธ์
์ ์ X๊ฐ ์ฃผ์ด์ง ๋ ์ ์ X์ ์ฌ์ฉํ ์ ์๋ ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ด 4๊ฐ์ง ์ด๋ค.
1. X๊ฐ 5๋ก ๋๋์ด๋จ์ด์ง๋ฉด, 5๋ก ๋๋๋ค.
2. X๊ฐ 3์ผ๋ก ๋๋์ด๋จ์ด์ง๋ฉด, 3์ผ๋ก ๋๋๋ค.
3. X๊ฐ 2๋ก ๋๋์ด๋จ์ด์ง๋ฉด, 2๋ก ๋๋๋ค.
4. X์์ 1์ ๋บ๋ค.
์ ์ X๊ฐ ์ฃผ์ด์ก์ ๋, ์ฐ์ฐ 4๊ฐ๋ฅผ ์ ์ ํ ์ฌ์ฉํด์ 1์ ๋ง๋ค๋ ค๊ณ ํ๋ค. ์ฐ์ฐ์ ์ฌ์ฉํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ์์ค.
- ์ ๋ ฅ์กฐ๊ฑด : ์ฒซ์งธ ์ค์ ์ ์ X๊ฐ ์ฃผ์ด์ง๋ค. (1 <= X <= 30,000)
- ์ถ๋ ฅ์กฐ๊ฑด : ์ฒซ์งธ ์ค์ ์ฐ์ฐ์ ํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
์ ๋ ฅ์์ | ์ถ๋ ฅ์์ |
26 | 3 |
๐ง ์์ด๋์ด
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋ ์ ์๋ค.
2. ์์ ๋ฌธ์ ์์ ๊ตฌํ ์ ๋ต์ ๊ทธ๊ฒ์ ํฌํจํ๋ ํฐ ๋ฌธ์ ์์๋ ๋์ผํ๋ค.
์ด ๋ฌธ์ ๋ ๋ ์กฐ๊ฑด ๋ชจ๋ ๋ง์กฑํ๋ฏ๋ก ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ bottom-up ๋ฐฉ๋ฒ์ ํตํด ๊ตฌํํด๋ณด๊ณ ์ ํ๋ค.
1) 1์ ๊ฒฝ์ฐ
- 1์ ๋ ์ด์ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์์๋ ๋๋ค. ๋ฐ๋ผ์ f(1) = 0
2) 2์ ๊ฒฝ์ฐ(2์ ๋ฐฐ์)
- 2๋ก ๋๋์ด๋จ์ด์ง๋ฏ๋ก ๊ฐ๋ฅํ ์ฐ์ฐ์ '2๋ก ๋๋๊ธฐ', '1 ๋นผ๊ธฐ'์ด๋ค.
a. 2๋ก ๋๋ ๊ฒฝ์ฐ : f(2) = (2๋ก ๋๋) + f(1) = 1 + f(i//2) = 1๋ฒ ์ฐ์ฐ
b. 1์ ๋บ ๊ฒฝ์ฐ : f(2) = (1 ๋บ) + f(1) = 1๋ฒ ์ฐ์ฐ
- ๋ ๊ฐ์ด ๊ฐ์ผ๋ฏ๋ก ์ต์๊ฐ ์๊ฐํ ํ์ ์์ด f(2) = 1
3) 3์ ๊ฒฝ์ฐ(3์ ๋ฐฐ์)
- 3์ผ๋ก ๋๋์ด๋จ์ด์ง๋ฏ๋ก ๊ฐ๋ฅํ ์ฐ์ฐ์ '3์ผ๋ก ๋๋๊ธฐ', '1 ๋นผ๊ธฐ'์ด๋ค.
a. 3๋ก ๋๋ ๊ฒฝ์ฐ : f(3) = (3์ผ๋ก ๋๋) + f(1) = 1 + f(i//3) = 1๋ฒ ์ฐ์ฐ
b. 1์ ๋บ ๊ฒฝ์ฐ : f(3) = (1 ๋บ) + f(2) = 2๋ฒ ์ฐ์ฐ
- ๋ ๊ฐ์ด ๋ค๋ฅด๋ฏ๋ก min(a๊ฒฝ์ฐ, b๊ฒฝ์ฐ) = a๊ฒฝ์ฐ ์ด๋ฏ๋ก f(3) = 1
4) 4์ ๊ฒฝ์ฐ
- 2๋ก ๋๋์ด๋จ์ด์ง๋ฏ๋ก ๊ฐ๋ฅํ ์ฐ์ฐ์ '2๋ก ๋๋๊ธฐ', '1 ๋นผ๊ธฐ'์ด๋ค.
a. 2๋ก ๋๋ ๊ฒฝ์ฐ : f(4) = (2๋ก ๋๋) + f(2) = 2๋ฒ ์ฐ์ฐ
b. 1์ ๋บ ๊ฒฝ์ฐ : f(4) = (1 ๋บ) + f(3) = 2๋ฒ ์ฐ์ฐ
- ๋ ๊ฐ์ด ๊ฐ์ผ๋ฏ๋ก ์ต์๊ฐ ์๊ฐํ ํ์ ์์ด f(4) = 2
5) 5์ ๊ฒฝ์ฐ(5์ ๋ฐฐ์)
- ์๋ต
- f(5) = 1 + f(i//5) = 2
6) 6์ ๊ฒฝ์ฐ(2์ 3์ ๋ฐฐ์)
- 2, 3์ผ๋ก ๋๋ ์ง๋ฏ๋ก ๊ฐ๋ฅํ ์ฐ์ฐ์ '2๋ก ๋๋๊ธฐ', '3์ผ๋ก ๋๋๊ธฐ', '1 ๋นผ๊ธฐ'
a. 2๋ก ๋๋ ๊ฒฝ์ฐ : f(6) = (2๋ก ๋๋) + f(3) = 2
b. 3์ผ๋ก ๋๋ ๊ฒฝ์ฐ : f(6) =(3์ผ๋ก ๋๋) + f(2) = 3
c. 1์ ๋บ ๊ฒฝ์ฐ : f(6) = (1 ๋บ) + f(5) = 2
- min(f(i//2)+1, f(i//3)+1, f(i-1)+1)
- ์ต์๊ฐ์ f(6) = 2
7) 7์ ๊ฒฝ์ฐ
- ๊ฐ๋ฅํ ์ฐ์ฐ์ '1 ๋นผ๊ธฐ'
a. 1์ ๋บ ๊ฒฝ์ฐ : f(7) = (1 ๋บ) + f(6) = 1 + f(i-1) =3
- f(7) = 3
์ด๋ฐ์์ผ๋ก ๋ก์ง์ ์๊ฐํ๋ค.
๊ฐ ์์๋ฅผ 0์ผ๋ก ํ ๋นํ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ for ๋ฌธ์ ๋๋ ค ๋ชฉํ๊ฐ ๊น์ง ๊ฐ์ ๊ณ์ฐํ ํ์
์ฐ์ฐ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
๐ง ์ฝ๋ ์์ฑ
x = int(input())
answer = [0 for i in range(3002)]
for i in range(2, x+1):
answer[i] = answer[i-1]+1
if (i % 2 == 0 ) : # 2์ ๋ฐฐ์๋ผ๋ฉด
answer[i] = min(answer[i], answer[i//2] + 1)
if (i % 3 == 0): # 3์ ๋ฐฐ์๋ผ๋ฉด
answer[i] = min(answer[i], answer[i // 3] + 1)
if (i % 5 == 0 ) : # 5์ ๋ฐฐ์๋ผ๋ฉด
answer[i] = min(answer[i], answer[i//5] + 1)
print(answer[x])
Soo-minJeon - Overview
Soo-minJeon has 12 repositories available. Follow their code on GitHub.
github.com
