-
백준 1697번 숨바꼭질PS 2020. 3. 10. 01:24
https://www.acmicpc.net/problem/1697
<접근방법>
탐색 문제입니다.
bfs로 풀었습니다.
범위 체크와 방문 체크가 필요합니다.
<느낀 점>
<코드>
#include <iostream> #include <algorithm> #include <queue> using namespace std; struct point { int x, cnt; }; int n, k; bool visit[100001]; queue<point> q; void bfs() { q.push({ n, 0 }); visit[n] = true; while (!q.empty()) { int x = q.front().x; int cnt = q.front().cnt; int nx; q.pop(); if (x == k) { cout << cnt << '\n'; return; } nx = x + 1; if (0 <= nx && nx <= 100000 && !visit[nx]) { q.push({ nx, cnt + 1 }); visit[nx] = true; } nx = x - 1; if (0 <= nx && nx <= 100000 && !visit[nx]) { q.push({ nx, cnt + 1 }); visit[nx] = true; } nx = x * 2; if (0 <= nx && nx <= 100000 && !visit[nx]) { q.push({ nx, cnt + 1 }); visit[nx] = true; } } } int main() { cin >> n >> k; bfs(); return 0; }
'PS' 카테고리의 다른 글
백준 13549번 숨바꼭질 3 (0) 2020.03.10 백준 12851번 숨바꼭질2 (0) 2020.03.10 백준 17825번 주사위 윷놀이 (0) 2020.03.09 백준 16932번 모양 만들기 (1) 2020.03.07 백준 16953번 A->B (0) 2020.03.07