다희의 코딩 성장일기

[프로그래머스] level2. 행렬 테두리 회전하기 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level2. 행렬 테두리 회전하기 (자바 JAVA)

ilmiodiario 2021. 8. 29. 20:26

[ 문제 ]  [프로그래머스] level2. 행렬 테두리 회전하기 (자바 JAVA)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/77485#

 

코딩테스트 연습 - 행렬 테두리 회전하기

6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3]

programmers.co.kr


# 접근 방법 및 풀이 

 

  • 쉬운 구현 문제다. 시계방향으로 주어진 범위대로 돌리고 값들 중에 min을 찾으면 된다.
  • 자세한건 코드참조

# 주의할 점 

 

  • 시계방향으로 돌릴 때 잘 확인하기

 

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 num = 1;
        for(int i = 0 ; i < rows; i++){
            for(int j = 0; j < columns; j++){
                map[i][j] = num;
                num++;
            }
        }
        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;
            answer[i] = move(startR, startC, endR, endC);
        }
        return answer;
    }
    public static int move(int startR, int startC, int endR, int endC ){
        int min = map[startR][endC];
        int tmp = map[startR][endC];
        //오
        for(int j = endC; j > startC; j--){
            map[startR][j] = map[startR][j-1];
            min = Math.min(min,map[startR][j]);
        }
        //위
        for(int i = startR; i < endR; i++){
            map[i][startC] = map[i+1][startC];
            min = Math.min(min,map[i][startC]);
        }
        //왼
        for(int j = startC; j < endC; j++){
            map[endR][j] = map[endR][j+1];
            min = Math.min(min,map[endR][j]);
        }
        //아래
        for(int i = endR; i > startR; i--){
            map[i][endC] = map[i-1][endC];
            min = Math.min(min, map[i][endC]);
        }
        map[startR+1][endC] = tmp;
        return min;
    }
}

 

 

 

REVIEW

처음 짠 대로 바로 통과하면 기분이 좋다.

Comments