TIL) 코딩테스트

2024. 12. 11. 18:40코딩테스트 리뷰(프로그래머스)/코딩 테스트 Lv.1

[PCCE 기출문제] 10번 / 공원

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

import java.util.Arrays;

class Solution {
    public int solution(int[] mats, String[][] park) {
        int x = park[0].length; // x 축
        int y = park.length; // y 축
        boolean isValid;
        Arrays.sort(mats);
        for (int k = mats.length - 1; k >= 0; k--) {// 메트 사이즈 별로 확인해보기 k 는 각 메트 사이즈 크기가 큰 순서부터 확인
            int mat = mats[k];
            for( int i = 0; i <= y - mat; i ++ ) { // 기반
                for ( int j = 0; j <= x - mat; j++ ) {
                    isValid = true;
                    for (int m = i; m < i + mat; m++) { // 돗자리 내부 확인
                        for (int n = j; n < j + mat; n++) {
                            if (!park[m][n].equals("-1")) {
                                isValid = false;
                                break;
                            }
                        }
                        if (!isValid) break;
                    }
                    if( isValid ) return mat;
                }
            }
        }

        return -1;
    }
}

 

풀이과정

문제에서 보면 x, y값이 주어지고 돗자리 사이즈가 주어진다.

즉 x  - 돗자리 싸이즈, y - 돗자리 싸이즈만큼 전부 돌려보면 된다는 결론이 나온다.

메트별로 비교를 하기 위해 정렬을 하고 뒤에서부터 사용하면 큰 사이즈부터 확인이 가능하다.

메트가 들어갈 메트릭스가 전부 -1 이 아니라면 다른 돗자리 사이즈를 확인하게 된다.

 

 

느낀점.

오늘 내일배움캠프에 수강신청하고, "무엇이든 물어보살"을 들으면서 느낀점이 많다.

슬슬 Spring 5기 모집 마무리에 들어가는데 카드가 내일 정식 발급이 되는데, 됬으면 좋겠다.