본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 바탕화면 정리 (JavaScript)

by gardenii 2024. 5. 14.

https://school.programmers.co.kr/learn/courses/30/lessons/161990?language=javascript

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function solution(wallpaper) {
    let fileLocation = []; // 파일 위치 배열
    for(i=0; i<wallpaper.length;i++){ //한 줄
      for(j=0; j<wallpaper[0].length;j++){ //줄의 한 칸
        if(wallpaper[i][j]===".") continue;
        else if(wallpaper[i][j]==="#"){
            fileLocation.push([i, j]);
        }
      }  
    }
    // 파일 위치 추출 [[0,1],[1,2],[2,3]]
    let xValues = [];
    let yValues = [];
    fileLocation.forEach(coord=>{
        xValues.push(coord[0]);
        yValues.push(coord[1]);
    })
    const minX = Math.min(...xValues);
    const minY = Math.min(...yValues);
    const maxX = Math.max(...xValues);
    const maxY = Math.max(...yValues);
    
    return [minX, minY, maxX+1, maxY+1]
}

코드 해설

- 주어진 파일 위치 배열을 돌면서 파일이 없는 "." 인 경우는 continue, 있을 경우에는 위치 좌표값(상단 좌측)을 배열 형태로 저장

- 저장된 파일 위치 중첩 배열에서 X좌표, Y좌표를 나누어 새 배열 생성 

- 각각 좌표에서 가장 작은 값, 가장 큰 값 구하기

- 파일 선택은 하단 우측까지 포함되어야 하므로 가장 큰 좌표 값에는 각각 +1 하여 출력