백준 2468 안전 영역 C++
- C
- 2023. 4. 10.
백준 2468 안전 영역.
백준 2468번 "안전 영역" 문제의 자세한 내용은 글 하단의 문제 링크를 참고하세요.
2468번 문제에 주어지는 입력 및 예시
입력:
5
6 8 2 6 2
3 2 3 4 6
6 7 3 3 2
7 2 5 3 6
8 9 5 2 7
출력:
5
코드
백준 2468번 "안전 영역" 문제의 코드입니다.
#include <bits/stdc++.h>
using namespace std;
int a[101][101],n;
bool visited[101][101];
int dy[4]={1,0,-1,0}; //위 오 아 왼
int dx[4]={0,1,0,-1};
void dfs(int y,int x,int h){
visited[y][x]=true;
for(int i=0;i<4;i++){
int _dx=x+dx[i];
int _dy=y+dy[i];
if(_dx<0 || _dy<0 || _dx>=n || _dy>=n ) continue;
if(!visited[_dy][_dx]&&a[_dy][_dx]>h) dfs(_dy,_dx,h);
}
return;
}
int main(void) {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int num,result=1;
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
for(int h=1;h<101;h++){
num=0;
memset(visited,false,sizeof(visited));
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(a[i][j]>h&&!visited[i][j]){
dfs(i,j,h);
num++;
}
}
}
result=max(result,num);
}
cout<<result<<"\n";
return 0;
}
실행
위의 코드를 예제의 입력을 넣어 실행했을 때의 결과입니다.
'C' 카테고리의 다른 글
백준 1966 프린터 큐 C++ (0) | 2023.04.10 |
---|---|
백준 2583 영역 구하기 C++ (0) | 2023.04.10 |
백준 1181 단어 정렬 C++ (0) | 2023.04.07 |
백준 1920 수 찾기 C++ (0) | 2023.04.07 |
백준 1260 DFS와 BFS C++ (0) | 2023.04.06 |