https://programmers.co.kr/learn/courses/30/lessons/77485
function solution(rows, columns, queries) {
let answer=[];
let arr=Array.from(Array(rows), ()=>Array(columns).fill(0));
for(let i=1; i<=rows; i++){
for(let j=1; j<=columns; j++){
arr[i-1][j-1]=(i-1)*columns+j
}
}
for(let i=0; i<queries.length; i++){
rotation(queries[i][0], queries[i][1], queries[i][2], queries[i][3]);
}
function rotation(x1, y1, x2, y2){
let min=Number.MAX_SAFE_INTEGER;
let tmp=arr[x1-1][y2-1];
//위
for(let i=y2; i>y1; i--){
arr[x1-1][i-1]=arr[x1-1][i-2];
if(arr[x1-1][i-1]<min) min=arr[x1-1][i-1];
}
//왼
for(let i=x1; i<x2; i++){
arr[i-1][y1-1]=arr[i][y1-1];
if(arr[i-1][y1-1]<min) min=arr[i-1][y1-1];
}
//아래
for(let i=y1; i<y2; i++){
arr[x2-1][i-1]=arr[x2-1][i];
if(arr[x2-1][i-1]<min) min=arr[x2-1][i-1];
}
//오른쪽
for(let i=x2; i>x1; i--){
arr[i-1][y2-1]=arr[i-2][y2-1];
if(arr[i-1][y2-1]<min) min=arr[i-1][y2-1];
}
arr[x1][y2-1]=tmp;
if(arr[x1][y2-1]<min) min=arr[x1][y2-1];
answer.push(min);
}
return answer;
}
중간 중간에 포기할까 생각했던 문제였는데, 결국 혼자 풀어냈다! 이럴때마다 아주 성취감 만땅이삼🤣
위, 왼쪽, 오른쪽, 아래 각각 로테이션하는 것을 구현했다. 내가 너무 비효율적으로 푸나, 싶었는데 대부분 이렇게 모범풀이도 나와 같은 방식이였다.
중간에 뻘짓했지만, vs코드의 도움을 받아서 끝까지 풀 수 있었다. vs코드도 잘 사용하자!