안녕하세요

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

프로그래머스/Lv.1

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

sakuraop 2023. 6. 16. 04:47

문제요약 : 드래그하여 모두 선택할 수 있는 최단 경로 찾기

모든 파일을 선택하기 위해선 바탕화면의 가장 왼쪽 위 (0, 0)에서 가장 오른쪽 아래 (7, 9)로 드래그 해야만 합니다. 따라서 [0, 0, 7, 9]를 return합니다.


 
function solution(wallpaper) {
  let top = Infinity,
    left = Infinity,
    bottom = 0,
    right = 0;

  wallpaper.forEach((row, rowIndex) => {
    if (row.includes("#")) {
      top = Math.min(top, rowIndex);
      bottom = Math.max(bottom, rowIndex);
    }
    row.split("").forEach((char, columnIndex) => {
      if (char === "#") {
        left = Math.min(left, columnIndex);
        right = Math.max(right, columnIndex);
      }
    });
  });

  return [top, left, bottom + 1, right + 1];
}

row에서 top과 bottom을 찾고,

column에서 left와 right를 반환하면

 

(0,0)과 (6,8)이 된다.

하지만 해당 파일 영역을 포함시키기 위해서는 드래그를 파일의 오른쪽 아래 영역까지 해야하므로

마지막에 bottom, right 각각에 +1 을 해준다.