728x90
🔍 아이디어
✔️ 시계방향으로 회전하며 배열 값을 바꿔주는 문제
✔️ 복잡한 알고리즘 대신 직접 _!for!_ 문을 구현, 간단하게 풀 수 있었다.
import java.util.*;
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
int[][] field = new int[rows][columns];
int count = 1;
for (int i = 0; i < field.length; i++) {
for (int j = 0; j < field[0].length; j++) {
field[i][j] = count;
count++;
}
}
int k = 0;
for (int[] arr : queries) {
int temp = 0;
int[] p1 = { arr[0] - 1, arr[1] - 1 };
int[] p2 = { arr[0] - 1, arr[3] - 1 };
int[] p3 = { arr[2] - 1, arr[3] - 1 };
int[] p4 = { arr[2] - 1, arr[1] - 1 };
int lastVal = field[p1[0] + 1][p1[1]];
int minVal = lastVal;
for (int i = p1[1]; i < p2[1]; i++) {
temp = field[p1[0]][i];
field[p1[0]][i] = lastVal;
lastVal = temp;
minVal = Math.min(minVal, temp);
}
for (int i = p2[0]; i < p3[0]; i++) {
temp = field[i][p2[1]];
field[i][p2[1]] = lastVal;
lastVal = temp;
minVal = Math.min(minVal, temp);
}
for (int i = p3[1]; p4[1] < i; i--) {
temp = field[p3[0]][i];
field[p3[0]][i] = lastVal;
lastVal = temp;
minVal = Math.min(minVal, temp);
}
for (int i = p4[0]; p1[0] < i; i--) {
temp = field[i][p4[1]];
field[i][p4[1]] = lastVal;
lastVal = temp;
minVal = Math.min(minVal, temp);
}
answer[k] = minVal;
k++;
}
return answer;
}
}
✔️ 링크: https://school.programmers.co.kr/learn/courses/30/lessons/77485