본문 바로가기
개발자/알고리즘

[BOJ] 13549번 숨바꼭질3

by D , 2019. 10. 11.
반응형

#include < iostream>
#include < queue>

using namespace std;

int n,k;

bool check[200001];
int dis[200001];

void bfs(){
    queue< int> q0;
    queue< int> q1;

    q0.push(n);
    check[n] = true;
    dis[n] = 0;

    while(!q0.empty()){
        int start = q0.front();
        q0.pop();

        for(int i=0;i<3;i++){
            int node;
            if(i==0){
                node = start*2;
            }else if(i==1){
                node = start-1;
            }else{
                node = start+1;
            }

            if(node<0 || node>200000){
                continue;
            }

            if(check[node] == false){
                if(i==0){
                    q0.push(node);
                    check[node] = true;
                    dis[node] = dis[start];
                }else{
                    q1.push(node);
                    check[node] = true;
                    dis[node] = dis[start] + 1;
                }
            }
        }

        if(q0.empty()){
            q0 = q1;
            q1 = queue();
        }
    }


}

int main()
{
    cin>>n>>k;

    bfs();

    cout<<dis[k]<<endl;

    return 0;
}

https://www.acmicpc.net/problem/13549

 

13549번: 숨바꼭질 3

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

www.acmicpc.net

 

반응형

'개발자 > 알고리즘' 카테고리의 다른 글

[BOJ] 1748번 수 이어 쓰기1  (0) 2019.10.13
[BOJ] 1261번 알고스팟 -deque  (0) 2019.10.12
[BOJ] 14226번 이모티콘  (0) 2019.10.08
[BOJ] 1697번 숨바꼭질  (0) 2019.10.07
[BOJ] 2178번 미로탐색  (0) 2019.09.23