[프로그래머스] 바탕화면 정리

fsm12·2023년 7월 17일
0

프로그래머스

목록 보기
38/57
post-thumbnail

문제링크

문제 이해

[ 입력형태 / 조건 ]

wallpaper
컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 | [".#...", "..#..", "...#."] | 1 ≤ wallpaper의 길이 ≤ 50, 1 ≤ wallpaper[i]의 길이 ≤ 50, wallpaper의 모든 원소의 길이는 동일

[ 문제 ]

드래그의 시작점이 (lux, luy), 끝점이 (rdx, rdy)라면 정수 배열 [lux, luy, rdx, rdy]를 return
조건> 드래그 시작점 (lux, luy)와 끝점 (rdx, rdy)는 lux < rdx, luy < rdy를 만족해야 함

[ 풀이 ]

좌측상단에서 우측하단으로 드래그를 할 때 최소거리가 되려면 파일과 밀착하여 드래그를 해야하므로, 파일들의 최소 x,y 좌표와 최대 x,y 좌표를 고르면 답이 됨



코드

> [성공] 1차 시도 : 구현

  • 생각한 풀이 그대로 구현
class Solution {
    public int[] solution(String[] wallpaper) {
        int xMin = Integer.MAX_VALUE, yMin = Integer.MAX_VALUE;
        int xMax = Integer.MIN_VALUE, yMax = Integer.MIN_VALUE;
        
        int N = wallpaper.length, M = wallpaper[0].length();
        for(int n=0; n<N; n++){
            for(int m=0; m<M; m++){
                if(wallpaper[n].charAt(m) == '#'){
                    xMin = Math.min(xMin, n);
                    yMin = Math.min(yMin, m);
                    xMax = Math.max(xMax, n+1);
                    yMax = Math.max(yMax, m+1);
                }
            }
        }
        return new int[]{xMin, yMin, xMax, yMax};
    }
}

=> 한 파일을 기준으로 선택 가능한 드래그 구간은 4개이기 때문에 좌표를 고려해야 함



Tip : 표로 계산할 때 x,y좌표가 축을 기준으로 하는지 칸을 기준으로 하는지를 고려해야 한다.

0개의 댓글