프로그래머스/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 을 해준다.