[프로그래머스] 바탕화면 정리 / JavaScript / Level 1

KimYoungWoong·2023년 3월 12일
0

Programmers

목록 보기
60/60
post-thumbnail

🚩문제 주소


📄 풀이

구현

문제를 처음 딱 보면 굉장히 길고 복잡해보이지만, 해석을 하면 굉장히 간단한 문제입니다.

모든 #을 포함하는 가장 작은 사각형의 왼쪽 상단, 오른쪽 하단 모서리의 좌표 구하기

이것이 핵심입니다.

  1. #의 좌표를 탐색하여 아래의 값을 구합니다.

    가장 작은 row 값 -> top
    가장 큰 row 값 -> bottom
    가장 작은 column 값 -> left 
    가장 큰 column 값 -> right
  2. [top, left, bottom, right] 형식을 반환합니다.
    다만, bottom과 right는 반환할 때, 각각 1씩 더해줘야 합니다.
    왜냐하면 문제에서 #을 볼 때, #의 좌상단을 0,0 우하단을 1,1로 보았기 때문입니다.



👨‍💻 코드

function solution(wallpaper) {
  let [top, bottom, left, right] = [51, 0, 51, 0];
  
  for (let r = 0; r < wallpaper.length; r++) {
    for (let c = 0; c < wallpaper[0].length; c++) {
      if (wallpaper[r][c] === ".") continue;
      top = Math.min(top, r);
      bottom = Math.max(bottom, r);
      left = Math.min(left, c);
      right = Math.max(right, c);
    }
  }
  
  return [top, left, bottom + 1, right + 1];
}

profile
블로그 이전했습니다!! https://highero.tistory.com

0개의 댓글