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