반응형
'가장 빠른 시간' 이란 말에서 BFS를 사용하는 문제임을 알 수 있다.
#include <iostream>
#include <queue>
using namespace std;
int N, K;
int d[100001];
int cnt;
void BFS() {
queue<int> q;
q.push(N);
d[N]=1;
while(!q.empty() || q.front()==K){
int now=q.front();
q.pop();
if(now-1>=0 && d[now-1]==0){
q.push(now-1);
d[now-1]=d[now]+1;
}
if(now+1<=100000 && d[now+1]==0){
q.push(now+1);
d[now+1]=d[now]+1;
}
if(now*2<=100000 && d[now*2]==0){
q.push(now*2);
d[now*2]=d[now]+1;
}
}
cout << d[K]-1;
}
int main() {
cin >> N >> K;
BFS();
}
'PS' 카테고리의 다른 글
[PS] 백준 2644번 - 촌수계산 (0) | 2023.05.17 |
---|---|
[PS] 백준 5014번 - 스타트링크 (0) | 2023.05.16 |
[PS] 백준 7576번 - 토마토 (0) | 2023.05.16 |
[PS] 백준 1012번 - 유기농 배추 (1) | 2023.05.16 |
[PS] 백준 2667번 - 단지번호붙이기 (0) | 2023.05.16 |