-
4936번 섬의 개수 | DFS | Baekjoon BOJ 백준 4936 C++ 코드, 해설, 풀이[백준 알고리즘]/[C++] 2021. 1. 30. 14:27728x90반응형
이번 포스팅은 백준 4936번 섬의 개수입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
기본 알고리즘
DFS 깊이 우선 탐색
전체 코드
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667//백준4963 섬의 개수#include <iostream>using namespace std;const int MAX = 50;int w, h;int map[MAX][MAX];bool visited[MAX][MAX];int dy[] = {0,0,-1,1,-1,-1,1,1};int dx[] = {1,-1,0,0,-1,1,-1,1};void reset() {for (int i = 0; i < h; i++) {for (int j = 0; j < w; j++) {map[i][j] = 0;visited[i][j] = 0;}}}void DFS(int y, int x) {visited[y][x] = true;for (int i = 0; i < 8; i++) {int ny = y + dy[i];int nx = x + dx[i];if (ny < 0 || nx < 0 || ny >= h || nx >= w)continue;if (map[ny][nx] == 1 && visited[ny][nx] == 0) {DFS(ny, nx);}}}int main() {while (true) {reset();cin >> w >> h;if (w == 0 && h == 0) {break;}for (int i = 0; i < h; i++) {for (int j = 0; j < w; j++) {cin >> map[i][j];}}int cnt = 0;for (int i = 0; i < h; i++) {for (int j = 0; j < w; j++) {if (map[i][j] == 1 && visited[i][j] == 0) {DFS(i, j);cnt++;}}}cout << cnt << endl;}}cs 728x90반응형'[백준 알고리즘] > [C++]' 카테고리의 다른 글
1697번 숨바꼭질 | BFS | Baekjoon BOJ 백준 1697 C++ 코드, 해설, 풀이 (0) 2021.02.01 2178번 미로 탐색 | BFS | Baekjoon BOJ 백준 2178 C++ 코드, 해설, 풀이 (0) 2021.02.01 11724번 연결 요소의 개수 | DFS, BFS | Baekjoon BOJ 백준 11724 C++ 코드, 해설, 풀이 (0) 2021.01.30 2667번 단지번호붙이기 | DFS | Baekjoon BOJ 백준 2667 C++ 코드, 해설, 풀이 (0) 2021.01.30 1012번 유기농 배추 | DFS | Baekjoon BOJ 백준 1012 C++ 코드, 해설, 풀이 (1) 2021.01.29