프로그래머스 | 행렬 테두리 회전하기

커몽·2021년 7월 3일
0

프로그래머스 level2

목록 보기
30/38
function solution(rows, columns, queries) {
    var answer = [];
    let map=new Array(rows).fill(0).map(()=>new Array(columns));
    for(let i=0;i<map.length;i++){
        for(let j=0;j<map[i].length;j++){
            map[i][j]=i*columns+j+1;
        }
    }
    
    for(let i=0;i<queries.length;i++){
        let [x1,y1,x2,y2]=queries[i].map(e=>e=e-1);
        let arr=[];
        for(let a=y1;a<=y2;a++){
            arr.push(map[x1][a])
        };
        for(let b=x1+1;b<=x2;b++){
            arr.push(map[b][y2])
        };
        for(let c=y2-1;c>=y1;c--){
            arr.push(map[x2][c])
        };
        for(let d=x2-1;d>x1;d--){
            arr.push(map[d][y1])
        };
        
        arr.unshift(arr.pop());
        answer.push(Math.min(...arr));
        
        
        for(let a=y1;a<=y2;a++){
            map[x1][a]=arr.shift();
        };
        for(let b=x1+1;b<=x2;b++){
            map[b][y2]=arr.shift();
        };
        for(let c=y2-1;c>=y1;c--){
            map[x2][c]=arr.shift();
        };
        for(let d=x2-1;d>x1;d--){
            map[d][y1]=arr.shift();
        };
    }
    return answer;
}

0개의 댓글