너비 우선 탐색 21

C

[BOJ 24447] 알고리즘 수업 - 너비 우선 탐색 4 C++

난이도: Silver 2 번호: 24447 생성일: March 4, 2023 3:00 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색 언어: C++ 24447번: 알고리즘 수업 - 너비 우선 탐색 4 C++ #include #include #include #include using namespace std; int N, M, R, sq = 1; // N: 정점의 수, M: 간선의 수, R: 시작 정점 vector path[100001]; // 인접 리스트 vector depth; // 노드의 깊이 vector seq; // 노드의 방문 순서 void BFS(int R) { queue Q; Q.push(R); // 시작 정점을 큐에 삽입 depth[R] = 0; // 시작 정점의 깊이는 ..

Algorithm/BOJ 2023.03.04

C

[BOJ 25416] 빠른 숫자 탐색 C++

난이도: Silver 2 번호: 25416 생성일: March 4, 2023 6:51 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색 언어: C++ 25416번: 빠른 숫자 탐색 C++ #include #include #include #include using namespace std; int r, c; int graph[5][5]; int dist[5][5]; const int dX[] = {0, 0, -1, 1}; const int dY[] = {1, -1, 0, 0}; int BFS(int r, int c) { queue Q; int seq = 1; Q.push({r, c}); dist[r][c] = seq++; // 시작 위치를 큐에 추가하고, 거리를 1로 설정 while (!Q..

Algorithm/BOJ 2023.03.04

C

[BOJ 1697] 숨바꼭질 C++

난이도: Silver 2 번호: 1697 생성일: March 4, 2023 7:53 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색 언어: C++ 1697번: 숨바꼭질 C++ #include #include #include using namespace std; int mini = 0xFFFFFFF; int N, K; bool visited[100001]; void BFS() { queue Q; Q.push({N, 0}); visited[N] = true; while (!Q.empty()) { int cur = Q.front().first; int cnt = Q.front().second; Q.pop(); if (cur == K) { mini = cnt; return; } if (cur ..

Algorithm/BOJ 2023.03.04

C

[BOJ 17086] 아기 상어 2 C++

난이도: Silver 2 번호: 17086 생성일: March 3, 2023 7:26 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색, 브루트포스 알고리즘 알고리즘, 자료 구조: Memoization 언어: C++ 17086번: 아기 상어 2 C++ BFS+ Memoization #include #include #include using namespace std; int N, M, maxDistToShark = -1; bool map[51][51]; bool vst[51][51]; int memo[51][51]; // 메모이제이션 배열 const int dX[] = {1, 1, 0, -1, -1, -1, 0, 1}; const int dY[] = {0, -1, -1, -1, 0, 1, ..

Algorithm/BOJ 2023.03.03

C

[BOJ 11060] 점프 점프 C++

난이도: Silver 2 번호: 11060 사용 함수, 자료 구조: Memoization, Tabulation 생성일: February 28, 2023 3:28 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색, 다이나믹 프로그래밍 언어: C++ 11060번: 점프 점프 C++ BFS + memoization #include #include #include using namespace std; int N; int arr[1002], memo[1002]; int BFS() { queue Q; memo[0] = 0; Q.push(0); while (!Q.empty()) { int idx = Q.front(); Q.pop(); for (int k = 1; k memo[idx] + 1) { me..

Algorithm/BOJ 2023.02.28

C

[BOJ 21938] 영상처리 c++

난이도: Silver 2 번호: 21938 생성일: February 27, 2023 3:15 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 깊이 우선 탐색, 너비 우선 탐색 언어: C++ 21938번: 영상처리 C++ BFS 메모리 시간 6924 kb 400 ms #include #include #include using namespace std; int map[1002][1002]; bool visit[1002][1002]; const int dX[] = {0, 0, -1, 1}; const int dY[] = {-1, 1, 0, 0}; int N, M, T, res; void BFS(int i, int j) { queue Q; Q.push({i, j}); visit[i][j] = true; whi..

Algorithm/BOJ 2023.02.27

C

[BOJ 21736] 헌내기는 친구가 필요해 c++

난이도: Silver 2 번호: 21736 생성일: February 25, 2023 4:28 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 깊이 우선 탐색, 너비 우선 탐색 언어: C++ C++ BFS // BOJ 21736 헌내기는 친구가 필요해 #include #include #include using namespace std; int N, M, res; char map[602][602]; bool visit[602][602]; const int dX[] = {1, -1, 0, 0}; const int dY[] = {0, 0, 1, -1}; void BFS(int i, int j) { queue Q; Q.push({i, j}); visit[i][j] = true; while (!Q.empty())..

Algorithm/BOJ 2023.02.25

C

[BOJ 13565] 침투 C++

난이도: Silver 2 번호: 13565 생성일: February 24, 2023 3:37 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 깊이 우선 탐색, 너비 우선 탐색 언어: C++ C++ BFS 메모리 시간 3980 kb 28 ms // BOJ 13565 침투 #include #include using namespace std; int N, M; char map[1002][1002]; bool visited[1002][1002]; const int dX[] = {0, 0, 1, -1}; const int dY[] = {1, -1, 0, 0}; void BFS(int i, int j) { queue Q; Q.push({i, j}); visited[i][j] = true; while (!Q.emp..

Algorithm/BOJ 2023.02.25

C

[BOJ 11234] 양 한마리... 양 두마리... C++

난이도: Silver 2 번호: 11123 생성일: February 22, 2023 4:48 PM 알고리즘 분류: 그래프 이론, 그래프 탐색, 깊이 우선 탐색, 너비 우선 탐색 언어: C++ 11123번: 양 한마리... 양 두마리... C++ BFS를 이용한 풀이 #include #include using namespace std; int T, H, W, res = 0; char node[102][102]; bool visited[102][102]; const int dX[] = {1, -1, 0, 0}; const int dY[] = {0, 0, -1, 1}; void BFS(int i, int j) { // 좌표가 담긴 pair를 담을 queue 생성 queue Q; Q.push({i, j}); v..

Algorithm/BOJ 2023.02.22

C

[BOJ 4963] 섬의 개수 C++

섬의 개수 난이도: Silver 2 번호: 4963 사용 함수, 자료 구조: memset 알고리즘 분류: 그래프 이론, 그래프 탐색, 깊이 우선 탐색, 너비 우선 탐색 언어: C++ 4963번: 섬의 개수 C++ 상하좌우와 대각선 방향까지 8방 탐색을 할 수 있도록 방향배열(dX, dY)을 설정해준다. const int dX[] = {1, -1, 0, 0, 1, 1, -1, -1}; const int dY[] = {0, 0, -1, 1, 1, -1, 1, -1}; 8방 탐색중에 Out of Bound가 발생할수 있는데 해결에는 2가지 방법이 있다. if 조건 추가 if (i = M || j >= N) continue; 그래프 배열 상하좌우에 1칸씩 여유공간을 만들어준다...

Algorithm/BOJ 2023.02.09