~๋ชฉ์ฐจ~
๋ฌธ์
https://www.acmicpc.net/problem/16953
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, BFS
- ์ ๋ ฅ ๊ฐ์ ๋ํด์ ๋๊ฐ์ ์ฐ์ฐ์ ์ฐ์์ ์ผ๋ก ์ํํจ์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ํ์ธ
- ์ํ๋ ๊ฐ์ด ๋ฐ๊ฒฌ๋๋ฉด ์ถ๋ ฅ ํ ์ฆ์ ์ข ๋ฃ( ๊ฐ์ฅ ๋จผ์ ๋ฐ๊ฒฌ๋๋ ์ฐ์ฐ ํ์๊ฐ ๊ฐ์ฅ ์์ ์ฐ์ฐ์ด๋ฏ๋ก) : ๊ทธ๋ฆฌ๋
- ์ฐ์ฐ ๊ฐ์ด ํ์ผ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด ํด๋น ์๋ธ ํธ๋ฆฌ์ ๋ํด์ ๋์ด์ ํ์ํ์ง ์๋๋ก ํ๋ค.
์์ฑ ์ฝ๋
from collections import deque
a, b = map(int, input().split())
que = deque() # BFS
que.append((a*2, 2)) # 2๊ณฑํ๊ธฐ ์ฐ์ฐ
que.append((int(str(a)+'1'), 2)) # 1์๋ฆฌ์ ๋ํ๊ธฐ ์ฐ์ฐ
while que: # ํ์ ๊ฐ์ด ์์ ๋์
q = que.popleft()
if q[0] == b:
print(q[1]) # ๊ฐ์ฅ ๋จผ์ ๋ฐ๊ฒฌ ๋๋ ํ๊ฒ๊ฐ ์ฐ์ฐ ํ์ ์ถ๋ ฅ
exit() # ์ข
๋ฃ
else:
# ๋ ๊ฐ์ ์ฐ์ฐ์ ๋ํด ํ๊ฒ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค๋ฉด ํ์ ์ฝ์
if q[0]*2 <= b:
que.append((q[0]*2, q[1]+1))
if int(str(q[0])+'1') <= b:
que.append((int(str(q[0])+'1'), q[1]+1))
print(-1) # ๋ชจ๋ ๊ฒฝ์ฐ์ ์์์ ํ๊ฒ ์ฐพ์ง ๋ชป ํ๋ค๋ฉด
๋์์ด ๋์ จ๋ค๋ฉด ์ข์์ ๋๋ฌ์ฃผ์ธ์๐
'๐๋ฌธ์ ํ์ด > ๐งฉBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 2579 ๊ณ๋จ ์ค๋ฅด๊ธฐ | DP (2) | 2023.06.16 |
---|---|
[Python] ๋ฐฑ์ค 1966 ํ๋ฆฐํฐ ํ (0) | 2023.06.11 |
[Python] ๋ฐฑ์ค 1003 ํผ๋ณด๋์น ํจ์ | DP (0) | 2023.06.08 |
[Python] ๋ฐฑ์ค 9095 1, 2, 3 ๋ํ๊ธฐ | DP (0) | 2023.06.07 |
[Python] ๋ฐฑ์ค 1715 ์นด๋ ์ ๋ ฌํ๊ธฐ | ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (0) | 2023.06.06 |