[python]백준16953:A->B

죽부인·2023년 3월 26일
0

📌난이도🥈2

📌코드

📘 B → A 탐색

A, B = map(int, input().split())
count = 0

while True:
    if len(str(B)) > len(str(A)):
        if B % 10 == 1:
            B //= 10
            count += 1
            continue

    if B > A and B % 2 == 0:
        B //= 2
        count += 1
    elif B == A:
        print(count+1)
        break
    else:
        print(-1)
        break

📘 A → B 탐색 (BFS)

from collections import deque
A, B = map(int, input().split())
q = deque()
q.append(A, 1)

while q:
    cur, count = q.popleft()

    if cur > B:
        continue
    elif cur == B:
        print(count)
        break

    q.append(int(str(cur)+"1"), count+1)
    q.append(cur*2, count+1)
else:
    print(-1)

📌후기

bfs 로 접근하는 방법이 매우 신선했다. 무수히 커질 것 같아서 A 에서 시작해보지 않았는데 값이 커질때 pop하면서 continue 조건을 주는 것이 신박했다.

profile
연습장 입니다.

0개의 댓글