BOJ 16953. A->B(python)
BOJ 문제 16953. A->B
문제설명
정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.
2를 곱한다.
1을 수의 가장 오른쪽에 추가한다.
A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.
입출력 예
솔루션
-
bfs를 이용한 완전탐색으로 구현
-
연산 중 B를 넘어가면 무시
-
B를 찾거나 Queue가 빌 때까지 연산을 수행한다.
코드
from collections import deque
a, b = map(int, input().split())
q = deque()
q.append((a, 1))
result = -1
while q:
x, count = q.popleft()
# 연산으로 b를 만들면 연산 중지
if x == b:
result = count
break
# b보다 커지면 연산하지 않는다.
if x > b:
continue
# 2를 곱하는 경우
q.append((x*2, count+1))
# 숫자 오른쪽에 1을 더하는 경우
q.append((x*10+1, count+1))
print(result)
Author And Source
이 문제에 관하여(BOJ 16953. A->B(python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinho0705/BOJ-16953.-A-Bpython저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)