728x90
반응형
https://www.acmicpc.net/problem/4963
이 문제는 dfs를 이용해서 풀었다
*이차원배열*
arr[0][0]
|
arr[0][1]
|
arr[0][2]
|
arr[0][3]
|
arr[1][0]
|
arr[1][1]
|
arr[1][2]
|
arr[1][3]
|
arr[2][0]
|
arr[2][1]
|
arr[2][2]
|
arr[2][3]
|
#include <bits/stdc++.h>
using namespace std;
int w, h;
int graph[51][51];
bool dfs(int x, int y){
// 범위 벗어나는 경우
if(x<=-1 || x>=h || y<=-1 || y>=w) return false;
// 바다인 경우
if(graph[x][y]==0) return false;
// 땅인 경우
if(graph[x][y]==1){
graph[x][y] = 0;
dfs(x-1,y);
dfs(x+1,y);
dfs(x,y-1);
dfs(x,y+1);
dfs(x-1,y+1);
dfs(x+1, y+1);
dfs(x+1, y-1);
dfs(x-1, y-1);
return true;
}
return false;
}
int main(void) {
while(1){
cin >> w >> h;
if(w==0 & h==0) break;
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
cin >> graph[i][j];
}
}
int result = 0;
for(int i=0; i<h; i++){
for(int j=0; j<w; j++){
if(dfs(i,j)){
result++;
}
}
}
cout << result << endl;
}
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준/DP/C++] 2579번 계단 오르기 (0) | 2022.12.30 |
---|---|
[백준/BFS/C++] 2178번 미로 탐색 (0) | 2022.12.30 |
[백준/구현/C++] 2331번 반복수열 (0) | 2022.12.29 |
[백준/DP/C++] 11055번 가장 큰 증가 부분 수열 (0) | 2022.12.29 |
[백준/ DFS&BFS/ C++] 10451번 순열 사이클 (0) | 2022.12.29 |