본문 바로가기

Coding/내일배움캠프

[내일배움캠프] Node.js 4기 | Day 71 | 24.03.15.(금)

프로그래머스 / 바탕화면 정리

 

function solution(wallpaper) {
    var answer = [];
    
    // [".#...", "..#..", "...#."]
    // [0, 1, 3, 4]
    
    // XOXXX
    // XXOXX
    // XXXOX
    
    // 파일의 개수를 먼저 구한다.
    let fileCount = 0;
    
    // fileCount개의 파일에 대해서 각각의 x좌표와 y좌표를 담도록 한다.
    
    let xArr = [];
    let yArr = [];
    
    for (let i = 0 ; i < wallpaper.length ; i++){
        for (let j = 0 ; j < wallpaper[i].length; j++){
            if (wallpaper[i][j] === '#'){
                fileCount++;
                xArr.push(i);
                yArr.push(j);
            }
        }
    }
    
    
   // 전체 x 중 최댓값과 최솟값, 전체 y 중 최댓값과 최솟값을 찾는다.
    
    let maxX = Math.max(...xArr);
    let minX = Math.min(...xArr);
    let maxY = Math.max(...yArr);
    let minY = Math.min(...yArr);
    
    answer.push(minX);
    answer.push(minY);
    answer.push(maxX+1);
    answer.push(maxY+1);
    
    // 지금까지 바탕화면의 전체 크기를 고려하지 않았는데, 이 부분을 고려해주어야 할 것 같다.
    // 4번 예제에 대해서, 파일은 1개이지만 파일을 클릭하는 것이 아니라 드래그를 해주기 위해서는
    // 드래그할 수 있는 추가의 공간이 필요하다.
    
    // 파일이 1개만 존재하는 경우 따로 로직을 수행해주거나
    // wallpaper 전체 크기를 고려할 수 있는 방안을 생각해보아야 한다.
    
    // ["..........", ".....#....", "......##..", "...##.....", "....#....."]
    // [1, 3, 5, 8]
    
    // [".##...##.", "#..#.#..#", "#...#...#", ".#.....#.", "..#...#..", "...#.#...", "....#...."]
    // [0, 0, 7, 9]
    
    // ["..", "#."]
    // [1, 0, 2, 1]
    
    return answer;
}
 
 
 	
function solution(wallpaper) {
    var answer = [];
    
    // [".#...", "..#..", "...#."]
    // [0, 1, 3, 4]
    
    // XOXXX
    // XXOXX
    // XXXOX
    
    // 파일의 개수를 먼저 구한다.
    let fileCount = 0;
    
    // fileCount개의 파일에 대해서 각각의 x좌표와 y좌표를 담도록 한다.
    
    let xArr = [];
    let yArr = [];
    
    for (let i = 0 ; i < wallpaper.length ; i++){
        for (let j = 0 ; j < wallpaper[i].length; j++){
            if (wallpaper[i][j] === '#'){
                fileCount++;
                xArr.push(i);
                yArr.push(j);
            }
        }
    }
    
    
   // 전체 x 중 최댓값과 최솟값, 전체 y 중 최댓값과 최솟값을 찾는다.
    
    let maxX = Math.max(...xArr);
    let minX = Math.min(...xArr);
    let maxY = Math.max(...yArr);
    let minY = Math.min(...yArr);
    
    answer.push(minX);
    answer.push(minY);
    answer.push(maxX+1);
    answer.push(maxY+1);
    
    // 지금까지 바탕화면의 전체 크기를 고려하지 않았는데, 이 부분을 고려해주어야 할 것 같다.
    // 4번 예제에 대해서, 파일은 1개이지만 파일을 클릭하는 것이 아니라 드래그를 해주기 위해서는
    // 드래그할 수 있는 추가의 공간이 필요하다.
    
    // 파일이 1개만 존재하는 경우 따로 로직을 수행해주거나
    // wallpaper 전체 크기를 고려할 수 있는 방안을 생각해보아야 한다.
    
    // ["..........", ".....#....", "......##..", "...##.....", "....#....."]
    // [1, 3, 5, 8]
    
    // [".##...##.", "#..#.#..#", "#...#...#", ".#.....#.", "..#...#..", "...#.#...", "....#...."]
    // [0, 0, 7, 9]
    
    // ["..", "#."]
    // [1, 0, 2, 1]
    
    return answer;
}