[๋ฐฑ์ค/python] 1463๋ฒ : 1๋ก ๋ง๋ค๊ธฐ
๋ฌธ์
์ ์ X์ ์ฌ์ฉํ ์ ์๋ ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ ๊ฐ์ง ์ด๋ค.
- X๊ฐ 3์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ฉด, 3์ผ๋ก ๋๋๋ค.
- X๊ฐ 2๋ก ๋๋์ด ๋จ์ด์ง๋ฉด, 2๋ก ๋๋๋ค.
- 1์ ๋บ๋ค.
์ ์ N์ด ์ฃผ์ด์ก์ ๋, ์์ ๊ฐ์ ์ฐ์ฐ ์ธ ๊ฐ๋ฅผ ์ ์ ํ ์ฌ์ฉํด์ 1์ ๋ง๋ค๋ ค๊ณ ํ๋ค. ์ฐ์ฐ์ ์ฌ์ฉํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 106๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์ N์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฐ์ฐ์ ํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
์ ๋ต
import sys
from collections import defaultdict
number = int(sys.stdin.readline())
count = defaultdict(lambda : 999999)
count[1], count[2], count[3] = 0, 1, 1
for n in range(4, number+1):
if n%3 == 0 and n%2 == 0:
count[n] = min(count[n//3], count[n//2], count[n-1]) + 1
elif n%3 == 0:
count[n] = min(count[n//3], count[n-1]) + 1
elif n%2 == 0:
count[n] = min(count[n//2], count[n-1]) + 1
else:
count[n] = count[n-1] + 1
print(count[number])
์ ๋ ฅ๋ฐ์ ์ซ์ number์์ 1๋ก ๋ด๋ ค๊ฐ๋ ๊ฒ์ด ์๋
1์์ number๋ก ์ฌ๋ผ๊ฐ๋ ๋ฐฉ์์ผ๋ก ํ์ดํ๋ค.
defaultdict๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฅ ํฐ ์๋ก ์ด๊ธฐํํด๋๊ณ
2์ 3์ ๋ฌด์กฐ๊ฑด 1๋ฒ์ด๋ฏ๋ก 1๋ก ์ด๊ธฐํํ๋ค.
๊ฐ์ ๋ชจ๋ฅด๋ 4๋ถํฐ number๊น์ง ํ์ธํ๊ธฐ ์ํด ๋ฒ์๋ฅผ 4, number+1๋ก ์ง์ ํ์ฌ ๋ฐ๋ณตํ๋ค.
3์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ ๊ฒฝ์ฐ์ 2๋ก ๋๋์ด ๋จ์ด์ง๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ฌ
3์ผ๋ก ๋๋ ๊ฐ, 2๋ก ๋๋ ๊ฐ, 1์ ๋บ ๊ฐ์ count ์ค ๊ฐ์ฅ ์์ ๊ฐ์์ 1์ ๋ํ์ฌ count์ ์ ์ฅํ๋ค.
๋ง์ง๋ง์ผ๋ก number์ ๋๋ฌํ๊ธฐ ๊น์ง ํ์์ธ count[number]์ ์ถ๋ ฅํ๋ค.
'๐์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/python] 1244๋ฒ : ์ค์์น ์ผ๊ณ ๋๊ธฐ (0) | 2021.08.07 |
---|---|
[๋ฐฑ์ค/python] 9095๋ฒ : 1, 2, 3 ๋ํ๊ธฐ (0) | 2021.08.06 |
[๋ฐฑ์ค/python] 1992๋ฒ : ์ฟผ๋ํธ๋ฆฌ (0) | 2021.05.12 |
[๋ฐฑ์ค/python] 11866๋ฒ : ์์ธํธ์ค ๋ฌธ์ 0 (0) | 2021.05.12 |
[๋ฐฑ์ค/python] 1541๋ฒ : ์์ด๋ฒ๋ฆฐ ๊ดํธ (0) | 2021.05.12 |