import java.util.*;
/*
1 1 1 0
1 2 2 0
1 0 0 1
0 0 0 1
0 0 0 3
0 0 0 3
*/
class Solution {
int[] dr = new int[]{-1,1,0,0};
int[] dc = new int[]{0,0,-1,1};
int max = -1;
private int bfs(int x,int y, int[][] visited, int[][] picture){
Queue<int[]> queue = new LinkedList();
queue.offer(new int[]{x,y});
int result = 0;
int val = picture[x][y];
visited[x][y] = 1;
while(!queue.isEmpty()){
int[] target = queue.poll();
if(picture[target[0]][target[1]] == val){
//System.out.println(target[0]+","+target[1]);
result++;
}
for(int i = 0; i < 4; i++){
int nr = target[0]+dr[i];
int nc = target[1]+dc[i];
if(nr >= 0 && nr < visited.length
&& nc >=0 && nc < visited[0].length) {
if(visited[nr][nc]==0 && picture[nr][nc] == val){
visited[nr][nc] = 1;
queue.offer(new int[]{nr,nc});
}
}
}
}
if(max < result){
max = result;
}
return result;
}
public int[] solution(int m, int n, int[][] picture) {
int[][] visited = new int[m][n];
int val = 0;
for(int i = 0; i < m ; i++){
for(int j = 0 ; j < n; j++){
if(visited[i][j]==0 && picture[i][j] != 0){
val++;
bfs(i,j,visited, picture);
}
}
}
int[] answer = new int[2];
answer[0] = val;
answer[1] = max;
return answer;
}
}
평소에 자바스크립트를 통해 코딩테스트를 주로 진행하다가 자바를 보는 기업이 있어서 연습하게 됨
코드 오류를 바로 알려주어서 편하게 사용할 수 있는듯
하지만, 더욱 익숙해 져서 알고리즘 문제도 잘 풀 수 있도록 노력하자