[Programmers / Level 1] 340198. PCCE 기출문제 10번 / 공원(Java)

이하얀·2024년 10월 27일
0

🕊️ 프로그래머스

목록 보기
61/82

💡 Info




입출력 조건




입출력 예시




문제 이해


  • 돗자리를 겹치지 않게 펼 수 있는 가장 큰 크기를 구하면 되는 문제


알고리즘


풀이 시간 : 38분

  1. mats 정렬
  2. 큰 매트부터 비교해 배치가 가능한지 파악하기
  3. 별도 메서드 - 매트 배치가 되는지(-1) 확인
  4. 배치되는 가장 큰 매트를 찾아 -> 그 크기를 결과로(없다면 -1 반환)
import java.util.*;

class Solution {
    public int solution(int[] mats, String[][] park) {
        int rows = park.length;
        int cols = park[0].length;

        Arrays.sort(mats);

        for (int m = mats.length - 1; m >= 0; m--) {
            int size = mats[m];
            if (canPlaceMat(size, park, rows, cols)) {
                return size;
            }
        }
        
        return -1;
    }

    public boolean canPlaceMat(int size, String[][] park, int rows, int cols) {
        for (int i = 0; i <= rows - size; i++) {
            for (int j = 0; j <= cols - size; j++) {
                if (checkArea(i, j, size, park)) {
                    return true;
                }
            }
        }
        return false;
    }

    public boolean checkArea(int startX, int startY, int size, String[][] park) {
        for (int x = startX; x < startX + size; x++) {
            for (int y = startY; y < startY + size; y++) {
                if (!park[x][y].equals("-1")) {
                    return false;
                }
            }
        }
        return true;
    }
}


결과

profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글