[백준] 17086번 : 아기 상어2 - Java(자바)

강재원·2022년 12월 1일
0

[코딩테스트] Java

목록 보기
193/200



https://www.acmicpc.net/problem/17086

import java.util.*;

public class Main {
    static int arr[][];
    static boolean check[][];
    static int n,m;
    static int dx[]= {0,0,1,-1,1,1,-1,-1};
	static int dy[]= {1,-1,0,0,1,-1,-1,1};
    
    static int bfs(int a,int b){
        check=new boolean[n+1][m+1];
        Queue<int[]> q=new LinkedList();
        q.add(new int[]{a,b,0});
        check[a][b]=true;
        
        while(!q.isEmpty()){
            int v[]=q.poll();
            
            for(int i=0;i<8;i++){
                int x=v[0]+dx[i];
                int y=v[1]+dy[i];
                int z=v[2]+1;
                
                if(x<0 || x>=n || y<0 || y>=m || check[x][y]==true) continue;
                if(arr[x][y]==1) return z;
                q.add(new int[]{x,y,z});
                check[x][y]=true;
            }
        }
        return 0;
    }
    
    public static void main(String args[]) {
        Scanner s=new Scanner(System.in);
        n=s.nextInt();
        m=s.nextInt();
        arr=new int[n+1][m+1];
        
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                arr[i][j]=s.nextInt();
            }
        }
        int count=0;
        int num=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(arr[i][j]!=1){
                    num=bfs(i,j);
                    count=num>count ? num : count;
                } 
            }
        }
        System.out.print(count);
    }
}
profile
개념정리 & 문법 정리 & 알고리즘 공부

0개의 댓글