본문 바로가기

# 02/Swift - CTP

[Swift] 백준! 2447번 - 별 찍기 - 10

반응형

https://www.acmicpc.net/problem/2447

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

www.acmicpc.net

import Foundation

func getLine(_ i:Int, _ n:Int, _ s:String) -> String {
    var s = s
    if (n == 3 && (i%n == 0 || i%n == 1)) || (n > 3 && (n/3 >= i%n || n*2/3 < i%n)) {
        s = String(repeating: s, count: 3)
    } else {
        s = String(repeating: s, count: 1)+String(repeating: " ", count: s.count)+String(repeating: s, count: 1)
    }

    return s
}

let n = Int(readLine()!)!
for i in 1...n {
    var v = 1
    var line = "*"
    while v != n {
        v *= 3
        line = getLine(i, v, line)
    }
    print(line)
}
반응형