-
1697번 숨바꼭질 | BFS | Baekjoon BOJ 백준 1697 C++ 코드, 해설, 풀이[백준 알고리즘]/[C++] 2021. 2. 1. 09:55728x90반응형
이번 포스팅은 백준 1697번 숨바꼭질입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
기본 알고리즘
최단 경로(시간) = BFS (너비 우선 탐색)
참고
전체 코드
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061//백준1697 숨바꼭질#include <iostream>#include <queue>using namespace std;const int MAX = 100001;int N, K;bool visited[MAX] = { 0, };int path[MAX];queue<int> q;void printPath() {cout << "[PATH]" << endl;for (int i = N; i <= K; i++) {printf("%2d ", i);}printf("\n");for (int i = N; i <= K; i++) {printf("%2d ", path[i]);}printf("\n");}void BFS(int v) {path[v] = 0;visited[v] = true;q.push(v);while (!q.empty()) {int w = q.front();if (w == K) break;q.pop();if (visited[w + 1] == 0 && w + 1 >= 0 && w + 1 < MAX) {visited[w + 1] = true;q.push(w + 1);path[w + 1] = path[w] + 1;}if (visited[w - 1] == 0 && w - 1 >= 0 && w - 1 < MAX) {visited[w - 1] = true;q.push(w - 1);path[w - 1] = path[w] + 1;}if (visited[w * 2] == 0 && w * 2 >= 0 && w * 2 < MAX) {visited[w * 2] = true;q.push(w * 2);path[w * 2] = path[w] + 1;}}}int main() {cin >> N >> K;BFS(N);//printPath();cout << path[K];}cs 728x90반응형'[백준 알고리즘] > [C++]' 카테고리의 다른 글
7562번 나이트의 이동 | BFS | Baekjoon BOJ 백준 7562 C++ 코드, 해설, 풀이 (1) 2021.02.03 7576번 토마토 | BFS | Baekjoon BOJ 백준 7576 C++ 코드, 해설, 풀이 (1) 2021.02.02 2178번 미로 탐색 | BFS | Baekjoon BOJ 백준 2178 C++ 코드, 해설, 풀이 (0) 2021.02.01 4936번 섬의 개수 | DFS | Baekjoon BOJ 백준 4936 C++ 코드, 해설, 풀이 (0) 2021.01.30 11724번 연결 요소의 개수 | DFS, BFS | Baekjoon BOJ 백준 11724 C++ 코드, 해설, 풀이 (0) 2021.01.30