๐ก ์กฐ๊ฑด
- ๋ ๊ฐ์ ์ ์์ธ a์ b๊ฐ ์
๋ ฅ๋๋ค.
- ์ผ๋ จ์ ์์
์ ์ํํ์ฌ a๋ฅผ b๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค.
- ๋ค์์ ๋๊ฐ์ง ์์
๋ง ํ ์ ์๋ค.
- ์ง์์ธ ๊ฒฝ์ฐ์๋ง 2๋ก ๋๋๊ธฐ.
- 1 ๋ํ๊ธฐ
- (1 ≤ a , b ≤ 10 9 )
- a ๋ฅผ b ๋ก ๋ณํํ๋ ๋ฐ ํ์ํ ์ฃผ์ด์ง ์ฐ์ฐ์ ์ต์ ํ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์
- ์ํ, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ, BFS ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from collections import deque
from sys import stdin
a, b = map(int, stdin.readline().split())
def solve():
q = deque()
if a <= b:
print(b - a)
return
q.append((0, a))
while q:
cost, now = q.popleft()
if now == b:
print(cost)
return
if now > b:
if now % 2 == 0:
q.append((cost + 1, now // 2))
else:
q.append((cost + 1, now + 1))
else:
print(cost + (b - now))
return
solve()
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
103 27
์คํ๊ฒฐ๊ณผ
4
โจ๏ธ ๋ฌธ์ ํ์ด
- a ์ b ์ ์๋ฅผ ์
๋ ฅ๋ฐ๊ณ , a ๋ฅผ b๋ก ๋ง๋๋ ๋ฌธ์ ์ด๋ค.
- a์ ์ฐ์ฐํ ์ ์๋ ๋๊ฐ์ง ์ฐ์ฐ์ ๊ฐ์ง๊ณ b๋ฅผ ๋ง๋ค์ด์ผํ๋๋ฐ, ๋๋๊ธฐ์ ๋ํ๊ธฐ 1์ด๋ค.
- ๋ฌธ์ ์ ์ฒซ๋ฒ์งธ ์ฐ์ฐ์ a๋ฅผ ์๊ฒ ๋ง๋๋ ์ฐ์ฐ์ธ๋งํผ, a๊ฐ b๋ณด๋ค ์์ผ๋ฉด ํ ํ์๊ฐ ์๋ ์ฐ์ฐ์ด๋ค.
- BFS ์๊ณ ๋ฆฌ์ฆ์ ํตํด์ queue์ a๋ฅผ ์ฐ์ฐํ ๊ฐ๊ณผ ์ฐ์ฐํ ํ์๋ฅผ ๋ฃ์ด ๊ด๋ฆฌํ๋ค.
- (3)๋ฒ ์กฐ๊ฑด์ ์ํด queue์์ ๋ฝ์๋ธ ์ฐ์ฐ๋ a๊ฐ b๋ณด๋ค ์์์ง๋ฉด ํ์ฌ ์ฐ์ฐํ ํ์์ (b - queue์์ ๋ฝ์๋ธ ์ฐ์ฐ๋ a)๊ฐ์ ๋ํด ๋ฆฌํดํ๋ค.