코딩테스트/Programmers

[프로그래머스] PCCE 기출문제 10번 / 공원

grove1212 2025. 1. 26. 19:58
  1. 소요시간 : 1시간 - 2시간
  1. 해당 문제에서 배운 점
  • String 문법 equals()
    String str1 = "a", str2 = "b"; str1.equals(str2);
  • 정렬 방법

    import java.util.Arrays;
    int[] arr;  
    Arrays.sort(arr);
    
  • 프로그래머스에서 디버깅 방법

함수의 리턴형을 내가 찍고싶은 변수의 데이터형으로 변환하고, 해당 변수를 리턴하기

  1. 내 코드
    사용된 알고리즘은 DP이다.
import java.util.*;

class Solution {
    public int solution(int[] mats, String[][] park) {
        int answer =  -1, availableSeatSize = 1;
        int [][]visited = new int[park.length][park[0].length];

        for(int i = 0; i<park.length; i++){
            visited[i][0] = park[i][0].equals("-1") ? 1 : 0;
        }
        for(int j = 1; j<park[0].length; j++){
            visited[0][j] = park[0][j].equals("-1") ? 1 : 0;
        }

        for(int i = 1; i<park.length; i++){
            for(int j = 1; j<park[0].length; j++){
                if(park[i][j].equals("-1")){
                    visited[i][j] = Math.min(visited[i][j-1],Math.min(visited[i-1][j],visited[i-1][j-1])) + 1;
                    availableSeatSize = Math.max(visited[i][j], availableSeatSize);
                }
            }
        }

        Arrays.sort(mats);
        for(int i = mats.length - 1 ; i >= 0 ; i--){
            if(mats[i] <= availableSeatSize){
                answer = mats[i];
                break;
            }
        }

        return answer;
    }
}