Algorithm
프로그래머스 - 바탕화면 정리
b._.omi
2023. 5. 26. 11:00

문제



풀이
이 문제는 드래그를 시작할 좌표와 드래그를 마칠 좌표를 구하는게 관건이다
wallpaper 배열의 요소들 중에서 '#' 문자가 나온 가장 첫번째 요소의 인덱스가 드래그를 시작할 좌표의 y좌표가 된다
wallpaper 배열의 요소에서 가장 첫번째로 존재하는 '#' 문자가 몇 번째 인덱스에 있는지 확인하고 그중 최솟값이 드래그를 시작할 좌표의 x좌표가 된다
wallpaper 배열의 요소들 중에서 '#' 문자가 나온 요소들 중 마지막 요소의 인덱스 + 1 이 드래그를 마칠 좌표의 y좌표가 된다
wallpaper 배열의 요소에서 마지막에 존재하는 '#' 문자가 몇 번째 인덱스에 있는지 확인하고 그중 최댓값 + 1 이 드래그를 마칠 좌표의 x좌표가 된다
function solution(wallpaper) {
// [최상단y, 최상단x, 최하단y, 최하단x]
let position = [0, 0, 0, 0];
let initArr = [];
// 최상단 y좌표 구하기
for(let i = 0; i < wallpaper.length; i++) {
if(wallpaper[i].includes('#')) {
position[0] = i;
break;
}
}
// 최상단 x좌표 구하기
for(let i = 0; i < wallpaper.length; i++) {
if(wallpaper[i].includes('#')) {
initArr.push(wallpaper[i].indexOf('#'));
}
position[1] = Math.min(...initArr);
}
initArr = [];
// 최하단 y좌표 구하기
for(let i = 0; i < wallpaper.length; i++) {
if(wallpaper[i].includes('#')) {
initArr.push(i+1);
}
position[2] = Math.max(...initArr);
}
initArr = [];
// 최하단 x좌표 구하기
for(let i = 0; i < wallpaper.length; i++) {
if(wallpaper[i].includes('#')) {
initArr.push(wallpaper[i].lastIndexOf('#')+1);
}
position[3] = Math.max(...initArr);
}
return position;
}