1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[][] matrix = new int[rows][columns];
int[] answer = new int[queries.length];
int i, j, cnt = 1;
// 행렬 초기화
for (i = 0; i < rows; i++) {
for (j = 0; j < columns; j++) {
matrix[i][j] = cnt++;
}
}
for (i = 0; i < queries.length; i++) {
int x1 = queries[i][0] - 1;
int y1 = queries[i][1] - 1;
int x2 = queries[i][2] - 1;
int y2 = queries[i][3] - 1;
// 시계 방향으로 회전
int tmp1 = matrix[x1][y2];
int min = tmp1;
// 위 회전
for (j = y2; j > y1; j--) {
matrix[x1][j] = matrix[x1][j - 1];
if (min > matrix[x1][j])
min = matrix[x1][j];
}
// 왼쪽 회전
for (j = x1; j < x2; j++) {
matrix[j][y1] = matrix[j + 1][y1];
if (min > matrix[j][y1])
min = matrix[j][y1];
}
// 아래 회전
for (j = y1; j < y2; j++) {
matrix[x2][j] = matrix[x2][j + 1];
if (min > matrix[x2][j])
min = matrix[x2][j];
}
// 오른쪽 회전
for (j = x2; j > x1 + 1; j--) {
matrix[j][y2] = matrix[j - 1][y2];
if (min > matrix[j][y2])
min = matrix[j][y2];
}
matrix[j][y2] = tmp1;
if (min > matrix[j][y2])
min = matrix[j][y2];
answer[i] = min;
}
return answer;
}
}
|
cs |
시계 방향으로 회전해야 변수 하나로 처리할 수 있다.
'Programmers > Level2' 카테고리의 다른 글
모음 사전 (0) | 2021.10.09 |
---|---|
가장 먼 노드 (0) | 2021.08.08 |
거리두기 확인하기 (0) | 2021.08.07 |
배달 (0) | 2021.08.06 |
adenCase 문자열 만들기 (0) | 2021.08.06 |