문제 설명

숫자 N을 입력받으면 N x N 의 크기인 행렬로 달팽이행렬을 출력한다.

Example 1

Input: 5
Output: 
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9

문제풀이


var N = Int(readLine()!)!
var matrix = Array(repeating: Array(repeating: 0, count: N), count: N)
var number = 1
var col = -1
var row = 0
var trans = 1

while N > 0 {
    (0..<N).forEach { _ in
        col += trans
        matrix[row][col] = number
        number += 1
    }
    
    N -= 1
    
    (0..<N).forEach { _ in
        row += trans
        matrix[row][col] = number
        number += 1
    }
    
    trans *= -1
}

for row in matrix {
    print(row.map({ String($0)}).joined(separator: " "))
}