맛있는감귤

BOJ : 1697 숨바꼭질 본문

알고리즘/백준 알고리즘

BOJ : 1697 숨바꼭질

맛있는감귤 2017. 1. 17. 13:31

문제 : https://www.acmicpc.net/problem/1697


github : https://github.com/JEONG-SEUNGWOOK/BOJ/blob/master/1697.cpp


문제 출처


 Olympiad 
USA Computing Olympiad 2006-2007 Season USACO US Open 2007 Contest Silver 2번



순간이동을 포함한 1차원 탐색문제


방문한 index만 관리해주면 BFS로 간단하게 해결 가능하다.



#include <iostream>
#include <queue>
using namespace std;

int N, K;
pair<int, int> p;
queue<pair<int, int>> q;
bool isVisited[100005];
int ans;
int main(){
    scanf("%d%d",&N,&K);
    q.push(make_pair(N, 0));
    while(!q.empty()){
        p = q.front(); q.pop();
        int time = p.second;
        int pos = p.first;
        isVisited[pos]=true;
        
        if(pos == K){
            ans=time;
            break;
        }
        if(pos*2<=100000 && !isVisited[pos*2] ) q.push(make_pair(pos*2, time+1));       
        
        if(!isVisited[pos-1] && pos-1 >= 0)
            q.push(make_pair(pos-1, time+1));       
       
        if(!isVisited[pos+1] && pos+1 <= 100000) q.push(make_pair(pos+1, time+1));        
    }
    cout<<ans<<'\n';
}


'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

BOJ : 1743 음식물 피하기  (0) 2017.01.17
BOJ : 1707 이분 그래프  (0) 2017.01.17
BOJ : 1475 방 번호  (0) 2017.01.17
BOJ : 2775 부녀회장이 될테야  (0) 2017.01.17
BOJ : 8958 OX게임  (0) 2017.01.16