반응형

www.acmicpc.net/problem/16953

 

16953번: A → B

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

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
int a, b, cnt, last;
int main() {
    cin >> a >> b;
    
    // 같으면 안됨 (b = -1 -> while 안들어감)
    if (a == b) 
        b = -1;
    
    // b == a 이거나 b < a 이면 벗어남
    while (b>a) {
        last = b % 10;
        // 마지막 숫자가 3, 5, 7, 9 될 수 없음
        if (last > 1 && last % 2 == 1break;
 
        // 마지막 숫자가 1이면 1 제거
        // 마지막 숫자가 2의 배수이면 2로 나눔
        last == 1 ? b /= 10 : b /= 2;
        cnt++;
    }
    cout << (b == a ? cnt + 1 : -1);
}
cs
반응형

'백준 > 그리디' 카테고리의 다른 글

백준 1202  (0) 2021.02.12
백준 11000  (0) 2021.02.05
백준 2847  (0) 2021.02.05
백준 1439  (0) 2021.02.05
백준 1449  (0) 2021.02.05

+ Recent posts