CPP 문제풀이/백준
백준 1697번 : 숨바꼭질 (1차원 BFS)
hjc_
2020. 8. 27. 17:17
C++ 코드
#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
int dist[100002];
int n,k; // 동생과 수빈
int main(void){
cin >> n >> k;
fill(dist, dist+100001,-1); // 배열을 초기화 하는 함수
dist[n] = 0; // 여기에 수빈이 있다고 알려준다.
queue<int> Q;
Q.push(n);
while(dist[k] == -1){
int cur = Q.front();
Q.pop();
for(int nxt : {cur-1, cur+1, 2*cur}){ // *케이스 탐색*
if(nxt < 0 || nxt > 100000) continue;
if(dist[nxt] != -1) continue;
dist[nxt] = dist[cur]+1;
Q.push(nxt);
}
}
cout << dist[k];
}