

-Code
import java.util.*;
class Solution {
public int solution(int[] mats, String[][] park) {
// 큰 사이즈 부터 검사해야 하므로 정렬
Arrays.sort(mats);
// 사이즈 큰것부터 검사
for (int i = mats.length - 1; i >= 0; i--) {
int size = mats[i];
for (int row = 0; row < park.length; row++) {
for (int col = 0; col < park[row].length; col++) {
// 빈 공간이고 해당 사이즈 깔 수 있으면 사이즈 반환
if (park[row][col].equals("-1") && isOk(park, row, col, size)) {
return size;
}
}
}
}
return -1;
}
private boolean isOk(String[][] park, int row, int col, int size) {
// 공원을 벗어나지 않는지 확인
if (row + size > park.length || col + size > park[0].length) {
return false;
}
// 해당 사이즈의 돗자리를 깔수 있는지 확인
for (int r = 0; r < size; r++) {
for (int c = 0; c < size; c++) {
if (!park[r + row][c + col].equals("-1")) {
return false;
}
}
}
return true;
}
}
범위 문제를 간과했고, 추가적으로 사이즈 검사 시 맵을 돌면서 비어있으면 검사하도록 해 최댓값이 나오지 않았습니다. 그래서 사이즈를 기준으로 검사하는 식으로 수정해 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 9842번 Prime (0) | 2026.03.21 |
|---|---|
| [프로그래머스/Java] [PCCP 기출문제] 1번 / 붕대 감기 (0) | 2026.03.20 |
| [백준/Java] 4365번 Stack 'em Up (0) | 2026.03.20 |
| [백준/Java] 18115번 Issuing Plates (0) | 2026.03.19 |
| [백준/Java] 35368번 Breakout (0) | 2026.03.19 |