091

[JAVA] 바탕화면 정리 본문

Coding Test/Programmers(프로그래머스)

[JAVA] 바탕화면 정리

공구일 2025. 4. 3. 10:00
728x90

🔍자바 : 코딩테스트 연습문제. 바탕화면 정리

 

01. 코드 기획 단계 

- 처음에는 각각 값을 넣을 배열을 만들어볼 생각을 했었습니다. 주어진 배열보다 행과 열이 1씩 크게 만들으려고 보니까 사실상 가장 작은 행과 열이 luxluy에, 가장 큰 행과 열이 rdxrdy이 들어가는 것을 알게 됐습니다. #이 들어있는 배열의 주소가 r,c일 때 대각선 왼쪽 위의 주소는 r,c이고 대각선 오른쪽 아래의 주소는 r+1,c+1인 것을 보고 각 값의 최소,최댓값을 구해야겠다 생각했습니다.


02. 코드 실행 및 오류 잡기

class Solution {
    public int[] solution(String[] wallpaper) {
        int lux = wallpaper.length+1, luy= wallpaper[0].length()+1, rdx = 0, rdy = 0;
        for(int r = 0; r <wallpaper.length; r++){
            for(int c = 0; c < wallpaper[0].length(); c++){
                if(wallpaper[r].charAt(c) == '#'){
                    lux = Math.min(lux,r);
                    luy = Math.min(luy,c);
                    rdx = Math.max(rdx,r+1);
                    rdy = Math.max(rdy,c+1);
                }
            }
        }
        int[] answer = {lux, luy, rdx, rdy};
        return answer;
    }
}

- 굳이 answer에 넣지 않고 바로 출력해도 됩니다. return [luxluy, rdxrdy]

 

03. 정리 

- 무조건 #을 하나는 가지기 때문에 lux,luy,rdx,rdy는 각각 행의 최댓값, 열의 최댓값, 행의 최솟값, 열의 최솟값을 초기값을 가지게 하는 게 좋습니다.

728x90