Blog Content

    티스토리 뷰

    1697번 백준(Baekjoon)

    <문제>


    수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다.

    수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오.


    <정답 코드>


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    #include <iostream>
    #include <cstdio>
    #include <queue>
     
    using namespace std;
     
    int N, K;
    queue<int> q;
    bool check[100001];
     
    int bfs(int N, int K)
    {
        int time = 0;
        q.push(N);
        check[N] = 1;
     
        while (1)
        {
            int size = q.size();
            for (int i = 0; i < size; i++)
            {
                int tmp = q.front();
                q.pop();
                if (tmp == K)
                    return time;
                if (tmp * 2 <= 100000 && check[tmp * 2== 0) {
                    q.push(tmp * 2);
                    check[tmp * 2= 1;
                }
                if (tmp + 1 <= 100000 && check[tmp + 1== 0) {
                    q.push(tmp + 1);
                    check[tmp + 1= 1;
                }
                if (tmp - 1 >= 0 && check[tmp - 1== 0) {
                    q.push(tmp - 1);
                    check[tmp - 1= 1;
                }
            }
            time++;
        }
    }
     
    int main()
    {
        scanf("%d%d"&N, &K);
        printf("%d\n", bfs(N, K));
     
        return 0;
    }
    cs


    'C++ 문제풀이' 카테고리의 다른 글

    9095번 백준(Baekjoon)  (0) 2018.09.30
    1463번 백준(Baekjoon)  (0) 2018.09.30
    1929번 백준(Baekjoon)  (0) 2018.09.07
    1157번 백준(Baekjoon)  (0) 2018.09.06
    8958번 백준(Baekjoon)  (0) 2018.09.05

    Comments