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];
}