본문 바로가기

Algorithm/BFS

(C++) - 백준(BOJ)코딩 1697번 : 숨바꼭질(BFS)

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <queue>
using namespace std;
int c[100001], N, K;
queue <int> q;
int BFS()
{
    q.push(N);
    c[N] = 1;
    while (!q.empty())
    {
        int x = q.front();
        q.pop();
        if (x == K) { return c[x] - 1; }//만약 동생의 위치를 찾았다면 종료한다.
        if (x - >= && c[x - 1== 0) { c[x - 1= c[x] + 1; q.push(x - 1); }//x-1이 0보다 크거나 같아야 한다. 이때 수빈이의 위치를 큐에 넣어준다.
        if (x + <= 100000 && c[x + 1== 0) { c[x + 1= c[x] + 1; q.push(x + 1); }
        if (* x <= 100000 && c[* x] == 0) { c[* x] = c[x] + 1; q.push(* x); }
    }
}
int main() {
    cin >> N >> K;
    cout << BFS();
}
cs