[프로그래머스] [LV2] 행렬 테두리 회전하기
업데이트:
📚 행렬 테두리 회전하기
링크📎 : https://programmers.co.kr/learn/courses/30/lessons/77485
난이도 ⭐️⭐️
📖 문제
📝 내 풀이
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
int[][] matrix = new int[rows][columns];
for(int j = 0; j < matrix.length; j++){
for(int k = 0; k < matrix[0].length; k++){
matrix[j][k] = j*matrix[0].length + k + 1;
}
}
for(int i = 0; i < queries.length; i++){
int min = rows*columns;
int x1 = queries[i][0] - 1;
int y1 = queries[i][1] - 1;
int x2 = queries[i][2] - 1;
int y2 = queries[i][3] - 1;
int temp = matrix[x1][y2];
for(int j = y2; j > y1; j--){
matrix[x1][j] = matrix[x1][j-1];
if(matrix[x1][j] < min) min = matrix[x1][j];
}
for(int j = x1; j < x2; j++){
matrix[j][y1] = matrix[j+1][y1];
if(matrix[j][y1] < min) min = matrix[j][y1];
}
for(int j = y1; j < y2; j++){
matrix[x2][j] = matrix[x2][j+1];
if(matrix[x2][j] < min) min = matrix[x2][j];
}
for(int j = x2; j > x1 ; j--){
matrix[j][y2] = matrix[j-1][y2];
if(matrix[j][y2] < min) min = matrix[j][y2];
}
matrix[x1+1][y2] = temp;
if(matrix[x1+1][y2] < min) min = matrix[x1+1][y2];
answer[i] = min;
}
return answer;
}
}
👊🏻 내 전략
- 순차적으로 값을 덮어쓰면서 행렬을 회전시킨다고 생각하자
- 총 4방향으로 같은 방식으로 회전 시킨다.
- 회전 시키면서 가장 작은 minimum 값을 찾는다.
끝-!
댓글남기기