아직 계정이 없으신가요? 회원가입

Dev. Talk

장애물 인식 프로그램

회원사진moon023
91 views2023-02-20 16:51
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;
}