티스토리 뷰

알고리즘/백준(BOJ)

백준 - 1697 숨바꼭질

시나모온 2020. 6. 11. 18:23

문제 링크입니다 : https://www.acmicpc.net/problem/1697

 

1697번: 숨바꼭질

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

www.acmicpc.net

 

 

 

 

 

 

 

 

#include <iostream>
#include <queue>
#include <cstring>

using namespace std;

int N, K;
bool visited[100001];

inline int oper(int n, int dir) {
    switch (dir) {
        case 0:
            return n - 1;
        case 1:
            return n + 1;
        case 2:
            return n * 2;
        default:
            return -1;
    }
}

int bfs(int N) {
    queue<int> q;
    visited[N] = true;
    q.push(N);
    int ret = 0;
    while(!q.empty()) {
        int qSize = q.size();
        for(int i = 0; i < qSize; i++) {
            int cur = q.front();
            q.pop();
            if(cur == K) return ret;

            for(int dir = 0; dir < 3; dir++) {
                int next = oper(cur, dir);
                if(next < 0 || next > 100000) continue;
                if(visited[next]) continue;
                visited[next] = true;
                q.push(next);
            }
        }
        ret++;
    }
    return -1;
}

int main() {
    cin >> N >> K;

    memset(visited, false, sizeof(visited));

    cout << bfs(N);

    return 0;
}

 

 

 

개발 환경 : vscode

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

 

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

백준 - 1753 최단경로  (0) 2020.06.12
백준 - 2206 벽 부수고 이동하기  (0) 2020.06.11
백준 - 7569 토마토  (0) 2020.06.11
백준 - 2178 미로 탐색  (0) 2020.06.11
백준 - 1012 유기농 배추  (0) 2020.06.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
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
글 보관함