[백준/코틀린] 2448번: 별 찍기 - 11
골드 4
링크
풀이
높이 h인 삼각형은 높이 h/2인 삼각형 3개로 구성됩니다.
- 위쪽:
(y, x + h/2) - 아래 왼쪽:
(y + h/2, x) - 아래 오른쪽:
(y + h/2, x + h)
이 규칙에 따라 삼각형을 3개의 하위 삼각형으로 분할해 재귀적으로 별을 찍습니다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
lateinit var canvas: Array<CharArray>
val BASE = arrayOf(
" * ",
" * * ",
"*****",
)
fun draw(h: Int, y: Int, x: Int) {
if (h == 3) return run {
for (i in 0 until 3) {
for (j in 0 until 5) {
canvas[y + i][x + j] = BASE[i][j]
}
}
}
val m = h / 2
draw(m, y, x + m)
draw(m, y + m, x)
draw(m, y + m, x + h)
}
fun main() {
val n = readln().toInt()
canvas = Array(n) { CharArray(2 * n - 1) { ' ' } }
draw(n, 0, 0)
canvas.forEach { println(it.concatToString()) }
}
This post is licensed under CC BY 4.0 by the author.