csct3434
[level 2] 행렬 테두리 회전하기 - 77485 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
int[][] arr = new int[rows][columns];
int count = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
arr[i][j] = ++count;
}
}
count = 0;
for (int[] query : queries) {
int x1 = query[0] - 1;
int y1 = query[1] - 1;
int x2 = query[2] - 1;
int y2 = query[3] - 1;
int minValue = Integer.MAX_VALUE;
int temp1 = arr[x1][y2];
for (int col = y2; col > y1; col--) {
arr[x1][col] = arr[x1][col - 1];
minValue = Math.min(arr[x1][col], minValue);
}
int temp2 = arr[x2][y2];
for (int row = x2; row > x1 + 1; row--) {
arr[row][y2] = arr[row - 1][y2];
minValue = Math.min(arr[row][y2], minValue);
}
arr[x1 + 1][y2] = temp1;
int temp3 = arr[x2][y1];
for (int col = y1; col < y2 - 1; col++) {
arr[x2][col] = arr[x2][col + 1];
minValue = Math.min(arr[x2][col], minValue);
}
arr[x2][y2 - 1] = temp2;
for (int row = x1; row < x2 - 1; row++) {
arr[row][y1] = arr[row + 1][y1];
minValue = Math.min(arr[row][y1], minValue);
}
arr[x2 - 1][y1] = temp3;
minValue = Math.min(minValue, temp1);
minValue = Math.min(minValue, temp2);
minValue = Math.min(minValue, temp3);
answer[count++] = minValue;
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
[level 2] 모음 사전 - 84512 (1) | 2024.02.29 |
---|---|
[level 2] 2개 이하로 다른 비트 - 77885 (0) | 2024.02.29 |
[level 2] 괄호 회전하기 - 76502 (0) | 2024.02.29 |
[level 2] 메뉴 리뉴얼 - 72411 (0) | 2024.02.29 |
[level 2] 이진 변환 반복하기 - 70129 (0) | 2024.02.29 |