https://school.programmers.co.kr/learn/courses/30/lessons/77485?language=java
import java.util.*;
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
int[][] arr = new int[rows+1][columns+1];
for(int i=1; i<=rows; i++) {
for (int j=1; j<=columns; j++) {
arr[i][j] = (i-1)*columns + j;
}
}
int x1, y1, x2, y2, min, tmp;
for (int i=0; i<queries.length; i++) {
x1=queries[i][0];
y1=queries[i][1];
x2=queries[i][2];
y2=queries[i][3];
tmp = arr[x1][y1];
min = tmp;
for (int j=x1; j<x2; j++) {
arr[j][y1] = arr[j+1][y1];
min = Math.min(min, arr[j+1][y1]);
}
for (int k=y1; k<y2; k++) {
arr[x2][k] = arr[x2][k+1];
min = Math.min(min, arr[x2][k+1]);
}
for (int l=x2; l>x1; l--) {
arr[l][y2] = arr[l-1][y2];
min = Math.min(min, arr[l-1][y2]);
}
for (int m=y2; m>y1; m--) {
arr[x1][m] = arr[x1][m-1];
min = Math.min(min, arr[x1][m-1]);
}
arr[x1][y1+1] = tmp;
answer[i] = min;
}
return answer;
}
}
시계반대방향으로 돌면서 값을 변화시키면 데이터 유실없이 변화 가능