dfs를 이용하면 쉽게 풀지만 저장하는 배열을 동적할당하면 메모리오류가 발생한다..;
□ 소스 코드
#include <bits/stdc++.h>
int inputList[25][25]{0};
int aptCntList[25]{0};//단지 별 아파트 개수
int aptCnt; // 단지 개수
int apN;
bool dfs2667(int x,int y){
if(x<0 || y<0 || x>=apN|| y>=apN)
return false;
if(inputList[x][y] == 1){
inputList[x][y] = 0;
aptCntList[aptCnt]++;
dfs2667(x+1, y);
dfs2667(x-1, y);
dfs2667(x, y+1);
dfs2667(x, y-1);
return true;
}
return false;
}
void countNumApartment(){
cin>>apN;
for(int i=0;i<apN;i++){
for(int j=0;j<apN;j++){
scanf("%1d",&inputList[i][j]);
}
}
for(int i=0;i<apN;i++)
for(int j=0;j<apN;j++)
if(dfs2667(i,j)== true)
aptCnt++;
printf("%d\n",aptCnt);
sort(aptCntList, aptCntList+aptCnt);
for(int i=0;i<aptCnt;i++)
printf("%1d\n",aptCntList[i]);
}
'알고리즘 > DFS & BFS' 카테고리의 다른 글
백준[2178] 미로 탐색 (0) | 2023.01.11 |
---|---|
백준 [1012] 유기농 배추 (0) | 2023.01.11 |
백준[1260] DFS와 BFS (0) | 2023.01.11 |
백준[2606] 바이러스 (0) | 2023.01.10 |
백준[24445] 알고리즘 수업 - 너비 우선 탐색 2 (0) | 2023.01.10 |