https://school.programmers.co.kr/learn/courses/30/lessons/77485
1. 단순 시뮬레이션 문제
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int q = queries.length;
int[] answer = new int[q];
int[][] arr = new int[rows][columns];
for(int i=0; i<rows; i++){
for(int j=0; j<columns; j++){
arr[i][j] = (i*columns)+(j+1);
}
}
// int val = 1; 두고 arr[i][j] = val++; 해도된다.
for(int i=0; i<q; i++){
// r:c = x:y
int x1=queries[i][0]-1, y1=queries[i][1]-1, x2=queries[i][2]-1, y2=queries[i][3]-1;
int e1, min, tmp;
// 반시계
min = arr[x1][y1];
e1 = arr[x1][y1];
// x1y1 -> x2y1
for(int j=x1; j<x2; j++){
arr[j][y1] = arr[j+1][y1];
min = Math.min(min, arr[j+1][y1]);
}
// x2y1 -> x2y2
for(int j=y1; j<y2; j++){
arr[x2][j] = arr[x2][j+1];
min = Math.min(min, arr[x2][j+1]);
}
// x2y2 -> x1y2
for(int j=x2; j>x1; j--){
arr[j][y2] = arr[j-1][y2];
min = Math.min(min, arr[j-1][y2]);
}
// x1y2 -> x1y1
for(int j=y2; j>y1+1; j--){
arr[x1][j] = arr[x1][j-1];
min = Math.min(min, arr[x1][j-1]);
}
arr[x1][y1+1] = e1;
answer[i] = min;
}
return answer;
}
}
'알고리즘 > 알고리즘' 카테고리의 다른 글
[C++] 프로그래머스 : 야간 전술보행 (0) | 2022.10.29 |
---|---|
[JAVA] 프로그래머스 : 뉴스 클러스터링 (0) | 2022.08.05 |
[JAVA] 프로그래머스 : 신규 아이디 추천 (0) | 2022.08.01 |
[JAVA] 프로그래머스 : 로또의 최고 순위와 최저 순위 (0) | 2022.08.01 |
[JAVA] 프로그래머스 : 신고 결과 받기 (0) | 2022.07.31 |