본문 바로가기
Problem Solving/Greedy

[그리디] 백준 16953번: A → B / 실버1

by ggyongi 2021. 5. 31.
반응형

https://www.acmicpc.net/problem/16953

 

16953번: A → B

첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.

www.acmicpc.net

import collections
a, b = map(int, input().split())

q = collections.deque()
q.append(a)

count = 0
while q:
    count += 1
    for i in range(len(q)):
        num = q.popleft()

        n1 = num * 2
        n2 = int(str(num)+"1")

        if b in [n1,n2]:
            print(count+1)
            quit()

        if n1 < b:
            q.append(n1)
        if n2 < b:
            q.append(n2)
print(-1)

 

큐를 사용하여 구현하였다. 숫자가 이전보다 작아질 수는 없으므로

target값인 b보다 작은 경우에만 다시 q에 넣어주는 방식으로 풀었다.

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글