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

찐새·2023년 5월 5일
0

코딩테스트

목록 보기
39/53
post-thumbnail

바탕화면 정리

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

코드

function solution(wallpaper) {
    let [sx, sy] = [0, 0], [ex, ey] = [0, 0], isFind = false;
    
    wallpaper.forEach((v, i)=>{
        [...v].forEach((w, j)=>{
            if (w === "#") {
                if (!isFind) {
                    sx = i;
                    sy = j;
                    ex = i+1;
                    ey = j+1;
                    isFind = true;
                } else{
                    sx = Math.min(sx, i);
                    sy = Math.min(sy, j);
                    ex = Math.max(ex, i+1);
                    ey = Math.max(ey, j+1);   
                }
            }
        })
    })
    return [sx, sy, ex, ey];
}

풀이

가장 처음 등장한 #을 찾기 위해 isFind 플래그를 세웠다. 못 찾았다면 현재 좌표를 드래그할 영역의 초기값으로 세팅했다. 요소 사이의 줄을 계산해야 하므로, 끝점은 +1했다.

이후 #이 등장하면 시작점은 기존 값보다 작을 때, 끝점은 기존 값보다 클 때 변경했다.

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글