프로그래머스-행렬 테두리 회전하기

이호영·2022년 4월 5일
0
import java.util.*;

class Solution {
    public int[] solution(int rows, int columns, int[][] queries) {
        int[] answer = new int[queries.length];
        int[][] data = new int[rows][columns];
        
        for (int i = 0; i < rows; i++){
            for (int j = 0; j < columns; j++){
                data[i][j] = i * columns + j + 1;
            }
        }
        
        for (int i = 0; i < queries.length; i++){
            
            int startR = queries[i][0] - 1;
            int startC = queries[i][1] - 1;
            int endR = queries[i][2] - 1;
            int endC = queries[i][3] - 1;
            
            int temp = 0;
            int min = Integer.MAX_VALUE;
            
            for (int j = startC; j <= endC; j++){
                if (j == startC) {
                    temp = data[startR][j];
                    continue;
                }
                min = Math.min(temp, min);
                
                int temp1 = data[startR][j];
                data[startR][j] = temp;
                temp = temp1;
            }
            
            for (int j = startR+1; j <= endR; j++){         
                min = Math.min(temp, min);
                
                int temp1 = data[j][endC];
                data[j][endC] = temp;
                temp = temp1;
            }
            
            for (int j = endC-1; j >= startC; j--){           
                min = Math.min(temp, min);
                
                int temp1 = data[endR][j];
                data[endR][j] = temp;
                temp = temp1;
            }
            
            for (int j = endR-1; j >= startR; j--){    
                min = Math.min(temp, min);
                
                int temp1 = data[j][startC];
                data[j][startC] = temp;
                temp = temp1;
            }
            
            answer[i] = min;
        }
       
        return answer;
    }
}

0개의 댓글