#include <stdio.h>
int graph[26][26] = {0};
int apart[26*26] = {0};
int n, count, sum = 0;
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
int dfs(int x, int y){
if(x < 0 || y < 0 || x >= n || y >= n) {
return 0;
}
if(graph[x][y] == 1) {
graph[x][y] = 0;
count++;
for(int i = 0; i < 4; i++) {
dfs(x + dx[i], y + dy[i]);
}
return 1;
}
return 0;
}
int main()
{
scanf("%d", &n);
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
scanf("%1d", graph[i] + j);
}
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(dfs(i, j) == 1) {
apart[count]++;
count = 0;
sum++;
}
}
}
printf("%d\n", sum);
for(int i = 0; i < 26*26; i++) {
if(apart[i] != 0){
int k = apart[i];
for(int j = 0; j < k; j++) {
printf("%d\n", i);
}
}
}
return 0;
}
공백없는 여러개의 숫자 입력받기
문제를 보면 위와 같이 공백이 없는 숫자가 입력된다. 이 경우 scanf("%1d", )
를 통해서 1개의 숫자만 입력받도록 할 수 있다. 그래서 반복문을 통해서 모든 숫자를 입력받을 수 있다.