๋ฌธ์
https://www.acmicpc.net/problem/16953
16953๋ฒ: A → B
์ฒซ์งธ ์ค์ A, B (1 ≤ A < B ≤ 109)๊ฐ ์ฃผ์ด์ง๋ค.
www.acmicpc.net
ํ์ด
BFS๋ฅผ ์ด์ฉํ ํ์ด
# ๋ฐฑ์ค 16953๋ฒ ๋ฌธ์ - A -> B
from collections import deque
def solution(a, b):
q = deque([(a,1)])
while q:
a, cnt = q.popleft()
if a == b:
print(cnt)
return
if a*2 <= b:
q.append((a*2, cnt+1))
if a*10+1 <= b:
q.append((a*10+1, cnt+1))
print(-1)
a, b = map(int, input().split())
solution(a,b)
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ํ์ด
# Heapq๋ฅผ ์ด์ฉํ์ฌ
# ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ํ์ด
import sys
import heapq
input = sys.stdin.readline
a , b = map(int,input().split())
def mulTwo(a, count):
return count+1, a*2
def addOne(a, count):
return count+1, int(str(a)+"1")
def solution(a, b):
q = [(0, a)]
while q:
cnt, a = heapq.heappop(q)
if a<b:
heapq.heappush(q, mulTwo(a, cnt))
heapq.heappush(q, addOne(a, cnt))
elif a==b:
return cnt+1
else:
continue
return -1
print(solution(a, b))
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฉ [๋ฐฑ์ค] [Python] 9933๋ฒ_๋ฏผ๊ท ์ด์ ๋น๋ฐ๋ฒํธ (0) | 2022.11.21 |
---|---|
๐ฉ [๋ฐฑ์ค] [Python] [Class4] 12852๋ฒ_1๋ก ๋ง๋ค๊ธฐ 2 (0) | 2022.11.19 |
๐ฉ [๋ฐฑ์ค] [Python] 1946๋ฒ_์ ์ ์ฌ์ (0) | 2022.11.19 |
๐ฉ [๋ฐฑ์ค] [Python] [ํ] 16927๋ฒ_๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (0) | 2022.11.18 |
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 2583๋ฒ_์์ญ ๊ตฌํ๊ธฐ (0) | 2022.11.17 |