📍 문제 설명
https://programmers.co.kr/learn/courses/30/lessons/77485
💡 접근
문제 설명대로 테두리만 회전시키고 회전한 원소 중 최솟값을 기록하면 되는 문제
원소 교체하고 board = clone 처리를 했으나 값만 바뀌는게 아닌 주솟값도 영향을 끼치는거 같아서 그냥 2중 for문 다시돌아서 다시 회전한 원소들을 배열에 넣어주었음
👩💻 코드
import java.util.*;
class Solution {
static int[] dx = {-1,1,0,0};
static int[] dy = {0,0,-1,1};
static char[] c = {'A', 'C', 'F', 'J', 'M', 'N', 'R', 'T'};
static HashMap<Character, Integer> map;
static boolean[] visited;
static int[][] clone;
static int answer;
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
Arrays.fill(answer, Integer.MAX_VALUE);
int num = 1;
int[][] board = new int[rows+1][columns+1];
clone = new int[rows+1][columns+1];
for(int i = 1; i <= rows; i++) {
for(int j = 1; j <= columns; j++) {
board[i][j] = num;
clone[i][j] = num;
num++;
}
}
for(int i = 0; i < queries.length; i++) {
int startX = queries[i][0];
int startY = queries[i][1];
int endX = queries[i][2];
int endY = queries[i][3];
//오른쪽
for(int j = startY; j < endY; j++) {
clone[startX][j+1] = board[startX][j];
answer[i] = Math.min(answer[i], clone[startX][j+1]);
}
//아래
for(int j = startX; j < endX; j++) {
clone[j+1][endY] = board[j][endY];
answer[i] = Math.min(answer[i], clone[j+1][endY]);
}
//왼쪽
for(int j = endY; j > startY; j--) {
clone[endX][j-1] = board[endX][j];
answer[i] = Math.min(answer[i], clone[endX][j-1]);
}
//위
for(int j = endX; j > startX; j--) {
clone[j-1][startY] = board[j][startY];
answer[i] = Math.min(answer[i], clone[j-1][startY]);
}
for(int j = 1; j <= rows; j++) {
for(int k = 1; k <= columns; k++) {
board[j][k] = clone[j][k];
}
}
}
System.out.println(Arrays.deepToString(board));
System.out.println(Arrays.toString(answer));
return answer;
}
public static void main(String[] args) {
Solution s = new Solution();
int rows = 6;
int columns = 6;
int[][] queries = {{2,2,5,4}, {3,3,6,6}, {5,1,6,3}};
s.solution(rows, columns, queries);
}
}
'Algorithm > programmers' 카테고리의 다른 글
[2018 카카오 블라인드 1차]뉴스 클러스터링 (0) | 2022.03.28 |
---|---|
[2021 카카오 블라인드]메뉴 리뉴얼 (0) | 2022.03.28 |
타겟넘버 (0) | 2022.02.24 |
더 맵게 (0) | 2022.02.24 |
기능개발 (0) | 2022.02.24 |