인프런 커뮤니티 질문&답변
코드 오류를 못 찾겠어요..ㅠㅠ
작성
·
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이 떠요.
감사합니다.





