소스 코드
import sys
from collections import deque
a,b = map(int,sys.stdin.readline().split())
# append, pop 쓸때는 deque가 []보다 빨라서 deque 사용
temp = deque([a,1])
ans = 1
while len(temp):
num = temp.popleft()
cnt = temp.popleft()
if num*2 < b:
temp.append(num*2)
temp.append(cnt+1)
elif num*2 == b:
ans = cnt + 1
break
if int(str(num) + '1') < b:
temp.append(int(str(num) + '1'))
temp.append(cnt+1)
elif int(str(num) + '1') == b:
ans = cnt + 1
break
if ans == 1:
print(-1)
else:
print(ans)
해결 방법
1. bfs + deque 사용해서 시간 단축
느낀 점
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.백준' 카테고리의 다른 글
[BOJ/백준 코딩] 요세푸스 문제 - PYTHON #1158 (0) | 2022.01.12 |
---|---|
[BOJ/백준 코딩] 큐 - PYTHON #10845 (0) | 2022.01.10 |
[BOJ/백준 코딩] 1로 만들기 - PYTHON #1463 (0) | 2021.11.17 |
[BOJ/백준 코딩] 평범한 배낭 - PYTHON #12865 (0) | 2021.11.15 |
[BOJ/백준 코딩] 물건 팔기 - PYTHON #1487 (0) | 2021.10.14 |