반응형
https://school.programmers.co.kr/learn/courses/30/lessons/77485
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
public class Solution {
static int[][] map;
static ArrayList<Integer> list = new ArrayList();
public static int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
map = new int[rows][columns];
int n = 1;
for(int i=0; i<rows; i++) {
for(int j=0; j<columns; j++) {
map[i][j] = n++;
}
}
for(int t=0; t<queries.length; t++) {
list.clear();
int x1 = queries[t][0]-1;
int y1 = queries[t][1]-1;
int x2 = queries[t][2]-1;
int y2 = queries[t][3]-1;
// 1. 윗 부분 돌리기
int a = map[x1][y2];
list.add(a);
for(int j=y2; j>y1; j--) {
map[x1][j] = map[x1][j-1];
list.add(map[x1][j]);
}
// 2. 오른쪽 부분 돌리기
int b = map[x2][y2];
list.add(b);
for(int i=x2; i>x1+1; i--) {
map[i][y2] = map[i-1][y2];
list.add(map[i][y2]);
}
map[x1+1][y2] = a;
// 3. 아래 부분 돌리기
a = map[x2][y1];
list.add(a);
for(int j=y1; j<y2-1; j++) {
map[x2][j] = map[x2][j+1];
list.add(map[x2][j]);
}
map[x2][y2-1] = b;
// 4. 왼쪽 부분 돌리기
for(int i=x1; i<x2-1; i++) {
map[i][y1] = map[i+1][y1];
list.add(map[i][y1]);
}
map[x2-1][y1] = a;
Collections.sort(list);
answer[t] = list.get(0);
}
return answer;
}
}
반응형
'알고리즘 > 카카오' 카테고리의 다른 글
[프로그래머스] 파괴되지 않은 건물 (0) | 2022.10.03 |
---|---|
[프로그래머스] 두 큐 합 같게 만들기 (0) | 2022.10.02 |
[프로그래머스] k진수에서 소수 개수 구하기 (0) | 2022.08.12 |
[프로그래머스] 양궁대회 (0) | 2022.08.09 |
[프로그래머스] 주차 요금 계산 (0) | 2022.08.04 |