https://programmers.co.kr/learn/courses/30/lessons/77485
회전을 어떻게 할지에 대한 문제 배열 원소 하나하나씩 옮겨줬다.
기준점을 잡고 해당 원소는 따로 보관하고 그자리로 다 밀어서 옮겨줬다.
마지막 보관하고 있던 값을 들어가야할 위치에 넣어준다.
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
int[][] map = new int[rows+1][columns+1];
int val = 1;
for(int i = 1 ; i<=rows ; i++){
for(int j =1 ; j<= columns ; j++){
map[i][j] = val++;
}
}
for(int t = 0 ; t < queries.length ; t++){
int sy = queries[t][0];
int sx = queries[t][1];
int ey = queries[t][2];
int ex = queries[t][3];
int minVal = map[sy][sx];
int tmp = map[sy][sx];
// 왼쪽 면
for(int i = sy; i< ey ;i++){
minVal = minVal > map[i+1][sx] ? map[i+1][sx] : minVal;
map[i][sx] = map[i+1][sx];
}
// 아랫 면
for(int i = sx ; i < ex ; i++){
minVal = minVal > map[ey][i+1] ? map[ey][i+1] : minVal;
map[ey][i] = map[ey][i+1];
}
// 오른쪽 면
for(int i = ey ; i> sy ; i--){
minVal = minVal > map[i-1][ex] ? map[i-1][ex] : minVal;
map[i][ex] = map[i-1][ex];
}
//윗쪽 면
for(int i = ex ; i> sx ; i--){
minVal = minVal > map[sy][i-1] ? map[sy][i-1] : minVal;
map[sy][i] = map[sy][i-1];
}
map[sy][sx+1] = tmp;
answer[t] = minVal;
}
return answer;
}
}