[완전 탐색] 10번 / 공원

[완전 탐색] 10번 / 공원

지민이는 다양한 크기의 정사각형 모양 돗자리를 가지고 공원에 소풍을 나왔습니다. 공원에는 이미 돗자리를 깔고 여가를 즐기는 사람들이 많아 지민이가 깔 수 있는 가장 큰 돗자리가 어떤 건지 확인하려 합니다. 예를 들어 지민이가 가지고 있는 돗자리의 한 변 길이가 5, 3, 2 세 종류이고, 사람들이 다음과 같이 앉아 있다면 지민이가 깔 수 있는 가장 큰 돗자리는 3x3 크기입니다.

10.jpg

지민이가 가진 돗자리들의 한 변의 길이들이 담긴 정수 리스트 mats, 현재 공원의 자리 배치도를 의미하는 2차원 문자열 리스트 park가 주어질 때 지민이가 깔 수 있는 가장 큰 돗자리의 한 변 길이를 return 하도록 solution 함수를 완성해 주세요. 아무런 돗자리도 깔 수 없는 경우 -1을 return합니다.

https://school.programmers.co.kr/learn/courses/30/lessons/340198#


import java.util.*;

class Solution {
    public int solution(int[] mats, String[][] park) {
        int answer = 0;
        
        int startX = 0;
        int startY = 0;
        
        int endX = 0;
        int endY = 0;
        
        Arrays.sort(mats);
        
        
        for(int i = mats.length -1 ; i > -1 ; i--) {
            int matSize = mats[i];

            endX = park.length - matSize+1;
            endY = park[0].length - matSize+1;
            
            
            for(int x = 0; x < endX; x ++) {
check:                for ( int y = 0 ; y < endY; y++) {
                    
                    for(int pointX = x; pointX < x+matSize; pointX++) {
                        for (int pointY = y;pointY < y+matSize; pointY++) {
                            if(!park[pointX][pointY].equals("-1")) {
                                continue check;
                            }
                        }
                    }
                    return matSize;
                    
                }
            }
        }
        
        return -1;
    }
}