coding-test

<백준> 25418 정수 a를 k로 만들기

도멩 2024. 1. 7. 17:31

정점:

1. 1차원 배열 사용

2. bfs알고리즘 안 dir에서 +1, *2에 대해서 vis 값 최신화한다.


정답 코드:

#include <bits/stdc++.h>

using namespace std;

int a, k;
int vis[1000001];

int main(void){
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> a >> k;

    queue<int> Q;

    Q.push(a);

    while (!Q.empty())
    {
        int cur = Q.front();
        Q.pop();

        if (cur == k){
            break;
        }

        if (cur + 1 <= k && !vis[cur + 1]){
            vis[cur + 1] = vis[cur] + 1;
            Q.push(cur + 1);
        }

        if (cur * 2 <= k && !vis[cur * 2]){
            vis[cur * 2] = vis[cur] + 1;
            Q.push(cur * 2);
        }
    }

    cout << vis[k];
}