Visual studio에서 디버깅 하면 맞는것 같은데 소프티어에서는 오답으로 나오네요. 어느 부분이 문제일까요..?
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
static int n, cnt=0;
static vector<vector<int>> Arry;
static vector<vector<bool>> Visited;
static vector<int> CountList;
static int dx[] = {0, 0, -1, 1};
static int dy[] = {-1, 1, 0, 0};
void DFS(int x, int y)
{
for (int i = 0 ; i < 4 ; i++)
{
int nx = x + dx[i];
int ny = y + dy[i];
if( nx < 0 || ny< 0 || nx >= n || ny >= n || Arry[nx][ny] == 0 ) continue;
if( Visited[nx][ny]) continue;
Visited[nx][ny] = true;
cnt++;
DFS(nx, ny);
}
}
int main(void)
{
cin >> n;
Arry = vector<vector<int>>(n, vector<int>(n, 0));
Visited = vector<vector<bool>>(n, vector<bool>(n,false));
// 배열 입력
for (int i = 0 ; i < n ; i++){
for (int j = 0 ; j < n ; j++){
cin >> Arry[i][j];
}
}
// 탐색
for (int i = 0 ; i < n ; i++){
for (int j = 0 ; j < n ; j++){
if(Visited[i][j]|| Arry[i][j] == 0 ) continue;
Visited[i][j] = true;
cnt = 1;
DFS(i, j);
CountList.push_back(cnt);
}
}
cout << CountList.size() << "\n";
for (int i = 0; i < CountList.size() ; i++ )
{
cout << CountList[i] << "\n";
}
return 0;
}