Notice
Recent Posts
Recent Comments
Link
뮁이의 개발새발
[JAVA] 프로그래머스 행렬 테두리 회전하기 본문
이젠 행렬 돌리는거는 도사가 되었다 ... 어디 한번 돌려보시지,,,
class Solution {
static int[][] map;
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
map = new int[rows][columns];
/* 초기 숫자 입력 부분 */
int cnt = 1;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
map[i][j] = cnt;
cnt++;
}
}
/* 돌리는 부분 */
for (int q = 0; q < queries.length; q++) {
answer[q] = ROLL(queries[q], rows * columns);
}
return answer;
}
static int ROLL(int[] query, int maxsize) {
int starty = query[0] - 1; // map의 index가 1씩 작기때문에 -1 해줌
int startx = query[1] - 1;
int endy = query[2] - 1;
int endx = query[3] - 1;
int min = maxsize;
int temp = map[starty][startx];
for (int i = starty; i < endy; i++) {
map[i][startx] = map[i + 1][startx];
min = Math.min(min, map[i][startx]); // 변화된 숫자의 최솟값 저장
}
for (int i = startx; i < endx; i++) {
map[endy][i] = map[endy][i + 1];
min = Math.min(min, map[endy][i]);
}
for (int i = endy; i > starty; i--) {
map[i][endx] = map[i - 1][endx];
min = Math.min(min, map[i][endx]);
}
for (int i = endx; i > startx; i--) {
map[starty][i] = map[starty][i - 1];
min = Math.min(min, map[starty][i]);
}
map[starty][startx + 1] = temp;
min = Math.min(min, temp);
System.out.println(min);
return min; //최솟값 반환
}
}
'Algorithm' 카테고리의 다른 글
[JAVA] 백준 1149 RGB거리 (DP) (0) | 2021.09.15 |
---|---|
[JAVA] 백준 1463 1로 만들기 (DP) (0) | 2021.09.14 |
[JAVA] 백준 1922 네트워크 연결 (MST 알고리즘) (0) | 2021.09.07 |
[JAVA] 백준 14696 딱지놀이 (0) | 2021.08.30 |
[JAVA] 백준 13300 방 배정 (0) | 2021.08.30 |
Comments