개발자 톡

연습문제 톡 장애물 인식 프로그램

장애물 인식 프로그램

등록일
2023-02-20 16:51:30
조회수
657
작성자
moon023
Visual studio에서 디버깅 하면 맞는것 같은데 소프티어에서는 오답으로 나오네요. 어느 부분이 문제일까요..?


#include
#include
#include

using namespace std;

static int n, cnt=0; 
static vector> Arry;
static vector> Visited;
static vector 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>(n, vector(n, 0));
	Visited = vector>(n, vector(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;
}



#장애물_인식_프로그램
#c++

이 카테고리의 톡 더보기