728x90
https://school.programmers.co.kr/learn/courses/30/lessons/340198
확인 내용
1. 돗자리의 크기들 확인 후 조건에 부합하는 가장 큰 값을 반환해야 함
2. for문이 많은 것은 런타임 에러에 주의
3. 돗자리는 정사각형이기 때문에 확인하는 값의 범위
코드 로직
1. 지민이가 가지고 있는 돗자리들의 크기들을 정렬하여 내림차순으로 만들어줍니다.
2. park에서 돗자리를 깔 수 있는 곳을 찾습니다.
3. 런타임 에러가 발생되지 않도록 예외 처리해줍니다.
최종 코드
import java.util.*;
class Solution {
public int solution(int[] mats, String[][] park) {
int answer = 0;
// 가장 큰 돗자리부터 찾아야 함
Integer[] matsArr = Arrays.stream(mats).boxed().toArray(Integer[]::new);
Arrays.sort(matsArr, Collections.reverseOrder());
// 돗자리 전체 확인
for (int m : matsArr){
// park의 너비
for (int i = 0; i <= park.length - m; i++){
for (int j = 0; j <= park[0].length - m; j++){
// 돗자리를 필 수 있다면 true, 중간에 하나라도 있으면 false
boolean check = true;
// park의 너비를 넘지 않고 빈자리라면
if(park[i][j].equals("-1") && (i + m) <= park.length && (j + m) <= park[0].length){
// 해당 자리부터 돗자리의 길이 만큼 정사각형의 길이 만큼을 확인
for (int k = 0; k < m; k++){ // 가로
for (int e = 0; e < m; e++){ // 세로
if(!park[k + i][e + j].equals("-1")){
check=false;
break;
}
}
if(!check) break;
}
if(check) {
return m;
}
}
}
}
}
return answer;
}
}
마무리
Javascript에서는 쉽게 정렬할 수 있었는데 자바로 하면서 int는 정렬할 수 없다는 것을 알게됐습니다. Interger만 된다는 것을,,,
그리고 출력할 때도 자꾸 변수값만 출력하다보니까 계속 주솟값만 찍힙니다. for문으로 돌려줘야하는데 자꾸 에러가 났습니다
가장 어려웠던 게 제가 생각했던 예외처리는 다 했다고 생각했는 데 뭔가 자꾸 생각나고 또 고쳐보면 다른 예외가 발생했습니다. 예외처리를 꼼꼼하게 하는 습관을 들여야 할 것 같습니다.
체점해보면 계속 몇개가 틀립니다. 어디를 고쳐야할 까요.. 90점네요.. 피드백 부탁드립니다
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [PCCE 기출문제] 9번 / 지폐 접기(Java) (0) | 2024.11.12 |
---|---|
[프로그래머스] [PCCP 기출문제] 2번 / 퍼즐게임챌린지(JavaScript) (1) | 2024.11.10 |
[프로그래머스] [PCCP 기출문제] 1번 / 붕대 감기(javascript) (3) | 2024.11.09 |
[프로그래머스] [PCCP 기출문제] 1번 / 동영상 재생기(Javascript) (0) | 2024.10.30 |
[프로그래머스]Lv3.이중우선순위큐(Java) (0) | 2023.10.08 |