https://school.programmers.co.kr/learn/courses/30/lessons/77485
디버깅하는데 시간이 넘 오래 걸렸다
import java.util.*;
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];
for(int i = 1; i < map.length; ++i)
{
for(int j = 1; j < map[0].length; ++j)
{
map[i][j] = (i-1)*(map[0].length-1) + j;
}
}
for(int i = 0; i < queries.length; ++i)
{
//가장작은숫자찾기
int sr = queries[i][0];
int sc = queries[i][1];
int er = queries[i][2];
int ec = queries[i][3];
ArrayList<Integer> arr = new ArrayList<>();
//윗변
for(int j = sc; j <= ec; ++j)
{
int cur = map[sr][j];
arr.add(cur);
}
//오른변
for(int j = sr+1; j <= er; ++j)
{
int cur = map[j][ec];
arr.add(cur);
}
//밑변
for(int j = ec-1; j >= sc; --j)
{
int cur = map[er][j];
arr.add(cur);
}
//왼변
for(int j = er-1; j>= sr; --j)
{
int cur = map[j][sc];
arr.add(cur);
}
int min = 1000000;
for(int val : arr)
min = Math.min(min, val);
answer[i] = min;
//for(int val : arr)
// System.out.print(val+" ");
//회전하기
int idx = 0;
map[sr][sc] = arr.get(arr.size()-1);
//윗변
for(int j = sc+1; j <= ec; ++j)
{
map[sr][j] = arr.get(idx++);
}
//오른변
for(int j = sr+1; j <= er; ++j)
{
map[j][ec] = arr.get(idx++);
}
//밑변
for(int j = ec-1; j >= sc; --j)
{
map[er][j] = arr.get(idx++);
}
//왼변
for(int j = er-1; j>= sr; --j)
{
map[j][sc] = arr.get(idx++);
}
//for(int j = 1; j < map.length; ++j)
//{
// for(int k = 1; k < map[0].length; ++k)
// {
// System.out.print(map[j][k] + " ");
// }
// System.out.println();
//}
}
return answer;
}
}