2020. 9. 7. 20:53ใ๋ฐฑ์ค ๋ฌธ์ ํ์ด/๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
๋ฐฑ์ค - 1๋ก ๋ง๋ค๊ธฐ(Python)
๋ฌธ์ ํด์:
์ ๋ฌธ์ ๋ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ๋ํํ๋ ๋ฌธ์ ์ด๋ค.
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ์ด๋ ค์ด ๊ฐ๋ ์ ์๋๊ณ ํ์์ ๊ฒฝํ๋๋ก ํ์ด์ฐ์๋ฉด ๊ธด ์ํ์๊ฐ์ ์ค์ด๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ ๊ฒฝ์ฐ์ '์ ํ์'๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ํ์ฉ์ผ๋ก ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
ํ์๊ฐ ํ์ด๋ณธ 1๋ก ๋ง๋ค๊ธฐ ๋ฌธ์ ์ค์ ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ ์์๋๋ฐ, ๋์ ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์ (๊ทธ๋ฆฌ๋)์ฒ๋ผ ํฐ์๋ถํฐ ๋๋๋ฉด ์ต์๊ฐ์ด ๋น์ฐํ๊ฒ ๋์ค์ง ์์ง ์๋?๋ผ๊ณ ์๊ฐํ ์๋ ์๋ค. ํ์ง๋ง ํฐ ์๋ก ๋๋๋ค๊ฐ ๊ฐ์ด ๋๋ ์ง์ง ์์ 1๋ก ๊ณ์ ๋นผ์ผํ๋ ๊ฒฝ์ฐ๋ ์คํ๋ ค ์ต์๊ฐ์ด ์๋ ์ต๋๊ฐ์ ๊ฐ๊น์ด ์๊ฐ ๋์ฌ ์๊ฐ ์๋ค.
์ด์ ๊ฐ์ด 1๋ก ๋ง๋๋๋ฐ ๋ง์ ์กฐ๊ฑด์ด ๋ถ์ ๊ฒ์ ๋ณดํต ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ์ด์ฉํ๋ฉด ๋๋ค.
์ฐ๋ฆฌ๋ d๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ๋ณผ ๊ฑด๋ฐ, '์ด๋ 1๊น์ง ๋ง๋๋๋ฐ ์ฐ์ฐ๋๋ ์ต์ํ์ ๊ฐ์ ๋ด๋ ๋ฆฌ์คํธ'์ด๋ค.
์๋ฅผ ๋ค์ด d[1]์ 1๊น์ง ๋ง๋๋๋ฐ ์ฐ์ฐ๋๋ ์ต์ํ์ ๊ฐ์ 0์ด๋ค. 1์ 1์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ฐ์ด ํ์์๊ธฐ ๋๋ฌธ์ด๋ค.
d[2]๋ 1๊น์ง ๋ง๋๋๋ฐ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
1. 1์ ๋บ๋ค.
2. 2๋ก ๋๋๋ค.
d[2]๋ ๋๊ฐ์ ์ฐ์ฐ๋ ๊ฐ์ด ๋ชจ๋ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ ์ค ํ๋๋ฅผ ํํด์ d[2]์ ๋ฃ์ผ๋ฉด ๋๋ค.
ํ์ง๋ง d[3]์ ์ด๋จ๊น?
1. 1์ ๋บ๋ค
2. 3์ผ๋ก ๋๋๋ค.
1๋ฒ์ ์ํํ๋ค๋ฉด
๊ฐ์ด 2๊ฐ๋๊ธฐ ๋๋ฌธ์ ๋ d[2]๊ณผ์ ์ ํด์ผํ๋ค. ์ด 2๋ฒ์ ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ง๋ค.
2๋ฒ์ ์ํํ๋ค๋ฉด
๊ณง๋ฐ๋ก 1์ด๋์ด ์ฐ์ฐ์ด 1๋ฒ๋ง ์ด๋ฃจ์ด์ง๋ค.
๊ทธ๋ ๋ค๋ฉด ๋๊ฐ์ ์ฐ์ฐ ์ค ์ต์๊ฐ์ d[3]์ ๋ด์ผ๋ฉด ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
d[10]์ ๊ตฌํ๋ ค๋ฉด ์ด๋ ํ ์๋ฆฌ๋ก ๊ณ์ฐ์ด ๋๋ ๊ฑธ๊น?
1์ ๋จผ์ ๋บด๊ณ , 3์ผ๋ก ๋๋๊ณ , 3์ผ๋ก ๋๋๋ค.
d[10] = d[10-1]+1 --> d[9] = d[9//3]+1 --> d[3] = d[3//3] +1 ------->result = 3
์ด๋ฅผ ์ฝ๋๋ก ์์ฑํด๋ณด๋ฉด ์ด๋ ๋ค.
x = int(input())
d = [0]*100000001
d[1] = 0
for i in range(2,x+1):
d[i] = d[i-1] +1
if i%2==0:
d[i] = min(d[i], d[i//2]+1)
if i%3==0:
d[i] = min(d[i], d[i//3]+1)
print(d[x])
'๋ฐฑ์ค ๋ฌธ์ ํ์ด > ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ์คํ ๋ฐฐ๋ฌ(Python) (2) | 2020.09.08 |
---|