상상쓰

[백준] A → B 본문

Coding Test

[백준] A → B

상상쓰 2021. 6. 26. 11:17

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

 

16953번: A → B

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

www.acmicpc.net

 

처음에 A 에서 B 로 가면서 중간 횟수를 배열에 담아 최종적으로 B 에 왔을 때의 값을 반환하니 메모리 초과가 났다.

생각해보니, A 에서 계산된 값은 짝수이거나, 1의 자리의 수가 1인 경우밖에 없으므로 B 에서 A 로 가면서 조건에 맞으면 answer 에 1을 더해주고 조건에 맞지 않거나 A 보다 작은 수가 되어 버리면 A 가 될 수 없는 수이므로 -1을 반환하면 된다. 

 

import sys

A, B = map(int, sys.stdin.readline().split())
answer = 1

while A < B:
    if B % 2 == 0:
        B = B // 2
        answer += 1
    else:
        if (B - 1) % 10 == 0:
            B = (B - 1) // 10
            answer += 1
        else:
            break

if A != B: answer = -1

print(answer)

'Coding Test' 카테고리의 다른 글

[프로그래머스] 순위  (0) 2021.06.29
[백준] 라디오  (0) 2021.06.28
[프로그래머스] 위장  (0) 2021.06.24
[프로그래머스] 짝지어 제거하기  (0) 2021.06.23
[프로그래머스] 다단계 칫솔 판매  (0) 2021.06.23
Comments