danbibibi
article thumbnail
Published 2022. 12. 13. 14:21
BOJ 1697번: 숨바꼭질 문제 풀이/백준

문제

문제 바로가기> BOJ 1697번: 숨바꼭질

 

1697번: 숨바꼭질

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

풀이

기존의 방문한 지점을 제외하고, 이동할 수 있는 총 3가지 방법으로 이동하면서 수빈이가 동생을 찾을 수 있는 가장 빠른 시간을 찾아주면 된다!

#include<iostream>
#include<queue>
#define MAX 100001
using namespace std;

int N, K;
bool visited[MAX];

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> N >> K;
    
    int ans = MAX;// 수빈이가 동생을 찾을 수 있는 가장 빠른 시간
    
    queue<pair<int, int>> q;
    visited[N] = true;
    q.push({N, 0});

    while(!q.empty()){
        int pos = q.front().first;
        int sec = q.front().second;
        q.pop();

        if(pos == K) ans = min(ans, sec);
        else{
            if(pos+1 < MAX && !visited[pos+1]){
                visited[pos+1] = true;
                q.push({pos+1, sec+1});
            }

            if(pos-1 >= 0 && !visited[pos-1]){
                visited[pos-1] = true;
                q.push({pos-1, sec+1});
            }

            if(pos*2 < MAX && !visited[pos*2]){
                visited[pos*2] = true;
                q.push({pos*2, sec+1});
            }
        }
    }
    cout << ans;
}

 

'문제 풀이 > 백준' 카테고리의 다른 글

BOJ 5430번: AC  (0) 2022.12.20
BOJ 13549번: 숨바꼭질 3  (0) 2022.12.14
BOJ 2294번: 동전 2  (0) 2022.12.09
BOJ 2293번: 동전 1  (0) 2022.12.07
BOJ 10021번: Watering the Fields  (0) 2022.12.04
profile

danbibibi

@danbibibi

꿈을 꾸는 시간은 멈춰 있는 것이 아냐 두려워하지 마 멈추지 마 푸른 꿈속으로