[swift] 스위프트 투칸의 플라이볼 채우기

스위프트의 투칸(2D) 배열은 다양한 방식으로 채울 수 있습니다. 이번 글에서는 투칸 배열을 플라이볼 형태로 채우는 방법에 대해 알아보겠습니다.

1. 플라이볼이란?

플라이볼은 일련의 숫자들로 구성된 형태로, 중앙을 기준으로 숫자가 하나씩 증가하면서 외부로 퍼져나가는 형태입니다. 예를 들어, 아래와 같이 플라이볼을 채울 수 있습니다.

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

2. 플라이볼 채우기 코드

아래는 스위프트를 사용해서 플라이볼을 채울 수 있는 코드 예시입니다.

func fillFlyball(n: Int) -> [[Int]] {
    var flyball = Array(repeating: Array(repeating: 0, count: n), count: n)
    var num = 1
    var rowStart = 0
    var rowEnd = n - 1
    var colStart = 0
    var colEnd = n - 1
    
    while num <= n * n {
        for i in colStart...colEnd {
            flyball[rowStart][i] = num
            num += 1
        }
        rowStart += 1
        
        for i in rowStart...rowEnd {
            flyball[i][colEnd] = num
            num += 1
        }
        colEnd -= 1
        
        for i in stride(from: colEnd, through: colStart, by: -1) {
            flyball[rowEnd][i] = num
            num += 1
        }
        rowEnd -= 1
        
        for i in stride(from: rowEnd, through: rowStart, by: -1) {
            flyball[i][colStart] = num
            num += 1
        }
        colStart += 1
    }
    
    return flyball
}

let n = 6
let flyball = fillFlyball(n: n)

for row in flyball {
    for num in row {
        print(num, terminator: " ")
    }
    print()
}

3. 코드 설명

위의 코드는 주어진 숫자 n을 기반으로 플라이볼을 채우는 함수 fillFlyball을 구현하고 있습니다.

위의 예시 코드에서는 n을 6으로 설정하여 6x6 크기의 플라이볼을 채우는 방법을 보여주고 있습니다.

참고 자료