Google 태그 관리자 아이콘

알고리즘 풀이

.leetcode(59. Spiral Matrix II)

silvergoni 2022. 3. 31. 09:02
반응형

https://leetcode.com/problems/spiral-matrix-ii/

 

1. 2022.03.31 시도

소요시간: 5분

class Solution {
    private String[] d = new String[]{"RIGHT", "DOWN", "LEFT", "UP"};
    public int[][] generateMatrix(int n) {
        int rowSize = n;
        int colSize = n;
        
        int p = 0;
        int q = -1;
        int[][] matrix = new int[n][n];
        int directionIndex = 0;
        int number = 1;
        while( rowSize != 0 || colSize != 0) {
            String direction = d[directionIndex];
            switch(direction) {
                case "RIGHT":
                    for (int i=0; i<colSize; i++) {
                        matrix[p][++q] = number++;
                    }
                    rowSize--;
                    break;
                case "DOWN":
                    for (int i=0; i<rowSize; i++) {
                        matrix[++p][q] = number++;
                    }
                    colSize--;
                    break;
                case "LEFT":
                    for (int i=0; i<colSize; i++) {
                        matrix[p][--q] = number++;
                    }
                    rowSize--;
                    break;
                case "UP":
                    for (int i=0; i<rowSize; i++) {
                        matrix[--p][q] = number++;
                    }
                    colSize--;
                    break;
            }
            
            directionIndex = (directionIndex + 1) % 4;
        }
        
        return matrix;
    }
}

풀이 접근 과정

바로 직전에 풀었떤 문제와 동일한 원리였다. 방향과 크기를 조절해가면서 위치를 선정하고 그에 맞게 숫자를 순차적으로 넣어준다. 

 

느낀점

  • 코드가 쉽게 읽히면 기억도 오래남는다.

알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)

반응형

 

'알고리즘 풀이' 카테고리의 다른 글

.leetcode(929. Unique Email Addresses)  (0) 2022.04.01
.leetcode(885. Spiral Matrix III)  (0) 2022.03.31
.leetcode(54. Spiral Matrix)  (0) 2022.03.31
.leetcode(917. Reverse Only Letters)  (0) 2022.03.30
.leetcode(404. Sum of Left Leaves)  (0) 2022.03.30