Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] 행렬 테두리 회전하기 - 77485 본문

프로그래머스

[level 2] 행렬 테두리 회전하기 - 77485

csct3434 2024. 2. 29. 03:27

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution {

    public int[] solution(int rows, int columns, int[][] queries) {
        int[] answer = new int[queries.length];

        int[][] arr = new int[rows][columns];

        int count = 0;
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                arr[i][j] = ++count;
            }
        }
        count = 0;

        for (int[] query : queries) {
            int x1 = query[0] - 1;
            int y1 = query[1] - 1;
            int x2 = query[2] - 1;
            int y2 = query[3] - 1;

            int minValue = Integer.MAX_VALUE;

            int temp1 = arr[x1][y2];
            for (int col = y2; col > y1; col--) {
                arr[x1][col] = arr[x1][col - 1];
                minValue = Math.min(arr[x1][col], minValue);
            }

            int temp2 = arr[x2][y2];
            for (int row = x2; row > x1 + 1; row--) {
                arr[row][y2] = arr[row - 1][y2];
                minValue = Math.min(arr[row][y2], minValue);
            }
            arr[x1 + 1][y2] = temp1;

            int temp3 = arr[x2][y1];
            for (int col = y1; col < y2 - 1; col++) {
                arr[x2][col] = arr[x2][col + 1];
                minValue = Math.min(arr[x2][col], minValue);

            }
            arr[x2][y2 - 1] = temp2;

            for (int row = x1; row < x2 - 1; row++) {
                arr[row][y1] = arr[row + 1][y1];
                minValue = Math.min(arr[row][y1], minValue);
            }
            arr[x2 - 1][y1] = temp3;

            minValue = Math.min(minValue, temp1);
            minValue = Math.min(minValue, temp2);
            minValue = Math.min(minValue, temp3);

            answer[count++] = minValue;
        }

        return answer;
    }
}