Daily LeetCode Challenge - 59. Spiral Matrix II

Min Young Kim·2023년 5월 10일
0

algorithm

목록 보기
142/198

Problem From.

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

오늘 문제는 어제 문제와 비슷하게 시계방향으로 매트릭스를 만들면서 1씩 증가하는 숫자를 채워넣는 문제였다.

어제 문제와 같이 minRow, maxRow, minCol, maxCol 을 만들어서 그 조건에 따라서 while 문을 돌면서 미리 만들어둔 n X n array 에 숫자를 채워넣으면 됐다.

class Solution {
    fun generateMatrix(n: Int): Array<IntArray> {
        
        val result = Array(n) { IntArray(n) { 0 } }
        
        var minRow = 0
        var maxRow = n - 1
        var minCol = 0
        var maxCol = n - 1
        
        var cnt = 1
        
        while(minRow <= maxRow && minCol <= maxCol) {
            
            for(i in minCol..maxCol) {
                result[minRow][i] = cnt
                cnt += 1
            }
            minRow += 1
            
            for(i in minRow..maxRow) {
                result[i][maxCol] = cnt
                cnt += 1
            }
            maxCol -= 1
            
            if(minRow <= maxRow) {
                for(i in maxCol downTo minCol) {
                    result[maxRow][i] = cnt
                    cnt += 1
                }
                maxRow -= 1
            }
            
            if(minCol <= maxCol) {
                for(i in maxRow downTo minRow) {
                    result[i][minCol] = cnt
                    cnt += 1
                }
                minCol += 1
            }
            
        }
        
        return result
    }
}
profile
길을 찾는 개발자

0개의 댓글