728x90
반응형
Java
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
int[][] arr = new int[rows][columns];
int start = 1;
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
arr[i][j] = start++;
}
}
for(int index = 0; index < queries.length; index++){
int startX = queries[index][0] - 1;
int startY = queries[index][1] - 1;
int endX = queries[index][2] - 1;
int endY = queries[index][3] - 1;
int before = arr[startX][startY];
answer[index] = before;
for(int i = startY + 1; i <= endY; i++){
int temp = arr[startX][i];
arr[startX][i] = before;
before = temp;
if(before < answer[index]) answer[index] = before;
}
for(int i = startX + 1; i <= endX; i++){
int temp = arr[i][endY];
arr[i][endY] = before;
before = temp;
if(before < answer[index]) answer[index] = before;
}
for(int i = endY - 1; i >= startY; i--){
int temp = arr[endX][i];
arr[endX][i] = before;
before = temp;
if(before < answer[index]) answer[index] = before;
}
for(int i = endX - 1; i >= startX; i--){
int temp = arr[i][startY];
arr[i][startY] = before;
before = temp;
if(before < answer[index]) answer[index] = before;
}
}
return answer;
}
}
Python
def solution(rows, columns, queries):
answer = []
arr = list()
for i in range(rows):
temp = list()
for j in range(columns):
temp.append(j + 1 + i * columns)
arr.append(temp)
for index in range(0, len(queries)):
startX = queries[index][0] - 1
startY = queries[index][1] - 1
endX = queries[index][2] - 1
endY = queries[index][3] - 1
before = arr[startX][startY]
answer.append(before)
for i in range(startY + 1, endY + 1, 1):
arr[startX][i], before = before, arr[startX][i]
if before < answer[index]:
answer[index] = before
for i in range(startX + 1, endX + 1, 1):
arr[i][endY], before = before, arr[i][endY]
if before < answer[index]:
answer[index] = before
for i in range(endY - 1, startY - 1, -1):
arr[endX][i], before = before, arr[endX][i]
if before < answer[index]:
answer[index] = before
for i in range(endX - 1, startX - 1, -1):
arr[i][startY], before = before, arr[i][startY]
if before < answer[index]:
answer[index] = before
return answer
728x90
반응형