백준 2468 안전 영역 C++

백준 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

Designed by JB FACTORY