Daily LeetCode Challenge - 54. Spiral Matrix

Min Young Kim·2023년 5월 9일
0

algorithm

목록 보기
141/198

Problem From.
https://leetcode.com/problems/spiral-matrix/

오늘 문제는 matrix 가 주어질때, 그 매트릭스를 시계방향으로 순회하면서 안에있는 원소들을 반환하는 문제였다.

먼저 rowMin, rowMax, colMin, colMax 값들을 선언해두고, 각각의 경우에 따라 순차적으로 탐색할 수 있도록 하였다.

colMin ~ colMax 까지 순회하고 rowMin 를 다 보았으니 rowMin 을 하나 더해주고,
rowMin ~ rowMax 까지 순회하고 colMax 를 다 보았으니 colMax 를 하나 빼주는 식으로 반복하여서 답을 구할 수 있었다.

class Solution {
    fun spiralOrder(matrix: Array<IntArray>): List<Int> {
        
        val answer = arrayListOf<Int>()
        
        var rowMin = 0
        var rowMax = matrix.size - 1
        var colMin = 0
        var colMax = matrix[0].size - 1
        
        
        while(rowMin <= rowMax && colMin <= colMax) {
            
            for(i in colMin..colMax) {
                answer.add(matrix[colMin][i])
            }
            rowMin += 1
            
            for(i in rowMin..rowMax) {
                answer.add(matrix[i][colMax])
            }
            colMax -= 1
            
            if(rowMin <= rowMax) {
                for(i in colMax downTo colMin) {
                    answer.add(matrix[rowMax][i])
                }
                rowMax -= 1
            }
            
            if(colMin <= colMax) {
                for(i in rowMax downTo rowMin) {
                    answer.add(matrix[i][colMin])
                }
                colMin += 1
            }
            
        }
        
        return answer.toList()
    }
}
profile
길을 찾는 개발자

0개의 댓글