https://www.acmicpc.net/problem/16953
16953번: A → B
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
www.acmicpc.net
이 문제는 BFS를 사용하면 된다.
visited 배열은 필요가 없다.
#include <iostream>
#include <queue>
using namespace std;
queue<pair<long,int>> q;
long A, B;
int counter = 0;
void bfs() {
q.push(make_pair(A,1));
while (!q.empty()) {
long now = q.front().first;
int c = q.front().second;
q.pop();
if (now == B) {
counter = c;
return;
}
if (now > B) continue;
long calc1 = now * 2;
long calc2 = now * 10 + 1;
q.push(make_pair(calc1,c+1));
q.push(make_pair(calc2, c + 1));
}
counter = -1;
}
int main() {
cin >> A >> B;
bfs();
cout << counter << '\n';
}
'Baekjoon Review' 카테고리의 다른 글
[Silver 1] 2178번 미로 탐색 (0) | 2023.11.02 |
---|---|
[Silver 1] 2667번 단지번호붙이기 (0) | 2023.11.02 |
[Gold 5] 10026번 적록색약 (0) | 2023.11.01 |
[Gold 5] 7569번 토마토 (0) | 2023.10.26 |
[Gold 4] 9019번 DSLR (0) | 2023.10.26 |