ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 - 바탕화면 정리
    Algorithm 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;
    }
Designed by Tistory.