강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

진수하님의 프로필 이미지
진수하

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-C

코드 오류를 못 찾겠어요..ㅠㅠ

작성

·

175

0

#include <bits/stdc++.h>

using namespace std;
int Area[100][100];
bool visited[100][100];
int drow[4] = {-1, 0, 1, 0};
int dcol[4] = {0, 1, 0, -1}; 
int cnt, rain, N ;
int out = 1;
void dfs(int row, int col, int rain)
{
	visited[row][col] = 1;
	for(int i = 0; i < 4;i++){
		int nrow = row + drow[i];
		int ncol = col + dcol[i];
		if(nrow >= N || ncol >= N || nrow < 0 || ncol < 0){
			continue;
		}
		if(Area[nrow][ncol] > rain && !visited[nrow][ncol]){
			dfs(nrow,ncol,rain);
		}
		return;
	}
}
int main()
{

	//find connected component
	//use DFS
	cin >> N;
	
	for(int row = 0; row < N; row++){
		for(int col = 0; col < N; col++ ){
			cin >> Area[row][col];
		}
	}
	for(int rain = 1; rain < 101; rain++){
		cnt = 0;
		fill(&visited[0][0], &visited[0][0] + 101*101, 0);
		for(int i = 0; i < N; i++){
    		for(int j = 0; j < N; j++){
    			if(Area[i][j] > rain && !visited[i][j]){
    				cnt++; 
					dfs(i,j,rain);
				}
			}
		}
		out = max(out,cnt);
	}

	cout << out;
	
	return 0; 
}

처음 작성한 코드는 위의 코드와 같습니다. 자꾸 틀렸다고 하여 무엇이 원인인지 찾기위해 이것저것 찾아보았지만 문제가 될게 전혀 보이지 않네요..ㅠ 알려주실 수 있을까요?

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요. 수하님ㅎㅎ 

물이 하나도 안 왔을 때의 예제를 처리하지 못하고 있어요. 

2

0 1

1 0

이 예제의 답은 2겠죠? 근데 수하님 코드는 1이 떠요.

 

감사합니다. 

진수하님의 프로필 이미지
진수하

작성한 질문수

질문하기