코드 흐름
- 특별한 기술이 들어간 것은 아니고 시작부터 모듈화하여 set과 turn 메서드로 나누어 풀이하였다.
- set 에서는 처음 만들어지는 배열을 세팅하고
- turn 에서는 실제로 시계방향으로 배열을 돌려가며 최소값을 찾아낸다.
오류
- 이문제를 푸는데 있어 여러가지 오류가 발생했다.
- 시계방향으로 돌려야 하건만 반시계 방향으로 돌리고 있었으며
- 문제를 제대로 읽지않고 행렬 테두리만 회전하면 되는것을 행렬자체를 돌려 버렸다.
- 문제를 잘 읽도록 하자.
import java.util.*;
class Solution {
int[][] map;
int[] answer;
public int[] solution(int rows, int columns, int[][] queries) {
answer = new int[queries.length];
map = new int[rows + 1][columns + 1];
set(rows, columns);
for (int i = 0; i < queries.length; i++) {
answer[i] = turn(queries[i][0], queries[i][1], queries[i][2], queries[i][3]);
}
return answer;
}
public void set(int rows, int columns) {
int num = 1;
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= columns; j++) {
map[i][j] = num;
num++;
}
}
}
public int turn(int startX, int startY, int endX, int endY) {
int min = Integer.MAX_VALUE;
int temp = map[startX][startY];
for (int i = startX; i < endX; i++) {
map[i][startY] = map[i + 1][startY];
min = Math.min(min, map[i][startY]);
}
for (int i = startY; i < endY; i++) {
map[endX][i] = map[endX][i + 1];
min = Math.min(min, map[endX][i]);
}
for (int i = endX; i > startX; i--) {
map[i][endY] = map[i - 1][endY];
min = Math.min(min, map[i][endY]);
}
for (int i = endY; i > startY; i--) {
map[startX][i] = map[startX][i - 1];
min = Math.min(min, map[startX][i]);
}
map[startX][startY + 1] = temp;
min = Math.min(min, temp);
return min;
}
}
'Algorithm & Data Structures > Programers' 카테고리의 다른 글
Lv 2. 괄호 변환 (0) | 2024.08.28 |
---|---|
Lv 2. 무인도 여행 (0) | 2024.08.26 |
Lv 2. 배달 (0) | 2024.08.20 |
Lv 2. 전력망을 둘로 나누기 (1) | 2024.08.19 |
Lv 2. 하노이의 탑 (0) | 2024.08.13 |