기억보다는 기록을 해볼까

[BOJ] A → B 16953 (C++) - 39 일차 본문

백준으로 C++ 공부하기

[BOJ] A → B 16953 (C++) - 39 일차

옥상에서 2021. 12. 20. 16:59
728x90

문제

 

16953번: A → B

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

www.acmicpc.net

생각

주어진 그대로 생각을 했다.

다만 queue에 push 할때 이값이 B보다 크면 의미가 없기 떄문에 B보다 작을때만 push 하는 조건을 넣었다.

코드

#include <iostream>
#include <queue>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;

    queue<pair<int, int>> q;
    q.push({a, 0});
    while(!q.empty()) {
        long long int num = q.front().first;
        long long int cnt = q.front().second;
        q.pop();

        if(num == b) {
            cout << cnt + 1 << "\n";
            return 0;
        }
        long long int nxt1 = num * 2;
        long long int nxt2 = num * 10 + 1;

        if(nxt1 <= b) {
            q.push({nxt1, cnt + 1});
        }
        if( nxt2 <= b) {
            q.push({nxt2, cnt + 1});
        }
    }
    cout << "-1";
    return 0;
}
728x90
Comments