import Foundation

func solution(_ n:Int) -> [Int] {
    var n = n
    var arr: [[Int]] = [[Int]](repeating: Array(repeating: 0,count: n), count: n)
    
    var row = -1
    var col = 0
    var count = 0
    var value = 1
    
    while 0 < n {
        count = 0
        // 행에 따라 값을 변경
        while (count < n) {
            row += 1
            arr[row][col] = value
            value += 1
            count += 1
        }
        
        count = 0
        while (count < n-1) {
            // 마지막행의 첫열의 값은 위에서 채웠기 때문에 다음열부터 값을 저장
            col += 1
            arr[row][col] = value
            value += 1
            count += 1
        }
        
        count = 0
        while (count < n-2) {
            col -= 1
            row -= 1
            // 마지막행의 마지막열에의 값은 위에서 채웠기 때문에 그위의 값부터 채움
            arr[row][col] = value
            value += 1
            count += 1
        }
        
        n -= 3
    }
    
    return arr.flatMap { $0.filter{ $0 != 0 } }
}

 

+ Recent posts