문제

for문을 네 번 돌려 직접 회전시켜준다. 인덱스 범위랑 행/열 헷갈리지 않기!

#include <vector>
#include <algorithm> // min
#define MAX 101
using namespace std;

vector<int> solution(int rows, int columns, vector<vector<int>> queries) {
	vector<int> answer;
	int arr[MAX][MAX];
	int result, T, x1, x2, y1, y2, start, i, j, k;

	for (i = 1; i <= rows; i++) {
		for (j = 1; j <= columns; j++) arr[i][j] = (i - 1) * columns + j;
	}

	T = queries.size();

	for (k = 0; k < queries.size(); k++) {
		result = rows * columns;
		x1 = queries[k][0]; // x: col
		x2 = queries[k][2];
		y1 = queries[k][1]; // y: row
		y2 = queries[k][3];

		start = arr[x1][y1]; // 직사각형의 왼쪽 위
		result = min(result, start);

		for (i = x1; i < x2; i++) { // 왼쪽 테두리 이동
			arr[i][y1] = arr[i + 1][y1];
			result = min(result, arr[i][y1]);
		}
		for (i = y1; i < y2; i++) { // 아래쪽 테두리 이동
			arr[x2][i] = arr[x2][i + 1];
			result = min(result, arr[x2][i]);
		}
		for (i = x2; i > x1; i--) { // 오른쪽 테두리
			arr[i][y2] = arr[i - 1][y2];
			result = min(result, arr[i][y2]);
		}
		for (i = y2; i > y1; i--) { // 위쪽 테두리
			arr[x1][i] = arr[x1][i - 1];
			result = min(result, arr[x1][i]);
		}
		arr[x1][y1 + 1] = start;
		answer.push_back(result);

	}
	return answer;
}