프로그래머스/LEVEL 2

카카오프렌즈 컬러링북

GenieLove! 2021. 4. 4. 18:56
728x90
반응형

Java

import java.util.*;
class Solution {
    public int[] solution(int m, int n, int[][] picture) {
        int[][] pictureCopy = Arrays.stream(picture).map(int[]::clone).toArray(int[][]::new);//picture복사
        int numberOfArea = 0;
        int maxSizeOfOneArea = 0;
        
        
        for(int x = 0; x < m; x++){
            for(int y = 0; y < n; y++){
                if (pictureCopy[x][y] > 0){
                    numberOfArea++;
                    int count = Count(pictureCopy, x, y, pictureCopy[x][y]);//이어진 개수 리턴
                    if(count > maxSizeOfOneArea)
                        maxSizeOfOneArea = count;
                }
            }
        }
        
        

        int[] answer = new int[2];
        answer[0] = numberOfArea;
        answer[1] = maxSizeOfOneArea;
        return answer;
    }
    
    private int Count(int[][] pictureCopy, int x, int y, int number){
        if(x < 0 || y < 0 ||
          x >= pictureCopy.length || y >= pictureCopy[x].length ||//x, y가 인덱스 범위 벗어나거나
          pictureCopy[x][y] == 0 || pictureCopy[x][y] != number)// 이미 다녀간 경로 혹은 빈 공간, 또는 같은 색이 아니면
            return 0;
        
        pictureCopy[x][y] = 0;
        
        return Count(pictureCopy, x - 1, y, number) + Count(pictureCopy, x + 1, y, number) +
               Count(pictureCopy, x, y - 1, number) + Count(pictureCopy, x, y + 1, number) + 1;//상하좌우 다 검사
    }
    
}
728x90
반응형

'프로그래머스 > LEVEL 2' 카테고리의 다른 글

가장 큰 수  (0) 2021.04.08
소수 찾기  (0) 2021.04.04
삼각 달팽이  (0) 2021.03.29
문자열 압축  (0) 2021.03.21
주식가격  (0) 2021.03.21