맛있는감귤

BOJ : 2468 안전 영역 본문

알고리즘/백준 알고리즘

BOJ : 2468 안전 영역

맛있는감귤 2017. 2. 4. 22:18

문제 : https://www.acmicpc.net/problem/2468

출처

Olympiad 한국정보올림피아드 KOI 2010 초등부 2번

DFS 문제입니다. 

잠기는 높이가 0일 때도 포함되는 것을 유념하시길 바랍니다.

반복문 인자로 자주 쓰는 i,j,k는 함수 파라미터로 사용하지 말자...ㅠㅠ

#include <stdio.h>
int map[101][101],ans=0,N;
int di[4]={1,-1,0,0};
int dj[4]={0,0,1,-1};
bool isVisited[101][101];

void dfs(int ii, int jj, int k, int cnt){
    isVisited[ii][jj] = true;
    for(int i=0;i<4;i++){
        int ni=ii+di[i], nj=jj+dj[i];
        if(ni >= 0 && nj >= 0 && ni < N && nj < N && map[ni][nj] > k && !isVisited[ni][nj]){
            dfs(ni,nj,k,cnt);
        }
    }
    
}

int main(){
    scanf("%d",&N);
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            scanf("%d",&map[i][j]);
        }
    }
    
    for(int k=0;k<=100;k++){
        int cnt = 0;
        for(int i=0;i<N;i++)
            for(int j=0;j<N;j++)
                isVisited[i][j]=false;

        for(int i=0;i<N;i++){
            for(int j=0;j<N;j++){
                if(map[i][j] > k && !isVisited[i][j]){
                    cnt++;
                    dfs(i,j,k,cnt);
                }
            }
        }
        if(cnt > ans) ans = cnt;
        if(cnt == 0) break;
    }
    printf("%d\n",ans);
}


'알고리즘 > 백준 알고리즘' 카테고리의 다른 글

BOJ : 5014 스타트링크  (0) 2017.02.08
BOJ : 2573 빙산  (0) 2017.02.07
BOJ : 12790 Mini Fantasy War  (0) 2017.02.03
BOJ : 2477 참외밭  (0) 2017.01.19
BOJ : 2458 키 순서  (0) 2017.01.19