[프로그래머스] 행렬 테두리 회전하기 (javascript)

728x90
반응형

 

 

function solution(rows, columns, queries) {
    var answer = [];
    const map=Array(rows).fill(0).map((_,i)=>Array(columns).fill(0).map((_,j)=>i*columns+j+1));
    
    for(let i=0;i<queries.length;i++){
        const[y,x,yy,xx]=queries[i];
        rotate(y-1,x-1,yy-1,xx-1,map,answer);
    }
    
    return answer;
}

function rotate(y,x,yy,xx,map,answer){
    let cur=map[y][x];
    let next;
    let minimum=cur;
    for(let j=x+1;j<=xx;j++){
        next=map[y][j];
        map[y][j]=cur;
        cur=next;
        if(minimum>cur)minimum=cur;
    }
    for(let i=y+1;i<=yy;i++){
        next=map[i][xx];
        map[i][xx]=cur;
        cur=next;
        if(minimum>cur)minimum=cur;
    }
    
    for(let j=xx-1;j>=x;j--){
        next=map[yy][j];
        map[yy][j]=cur;
        cur=next;
        if(minimum>cur)minimum=cur;
    }
    
    for(let i=yy-1;i>=y;i--){
        next=map[i][x];
        map[i][x]=cur;
        cur=next;
        if(minimum>cur)minimum=cur;
    }
    // console.log(map)
    answer.push(minimum);
}
728x90
반응형
TAGS.

Comments