PS(Problem Solving)/BOJ

[백준/BOJ] 2446번: 별 찍기 - 9

JunsuKim 2021. 11. 20.
728x90

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

 

2446번: 별 찍기 - 9

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력1

5

예제 출력1

*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********

해설

우선 뒤집힌 삼각형부터 만들었다.

이는 이전 2443번: 별 찍기 - 6과 동일한 방법으로 하면 된다.

이제 5~9행에 별을 찍으면 된다.

for문을 이용하여 n-2부터 0까지 루프를 만들고, j가 i보다 작을 때 빈칸을, n * 2 - i - 1보다 작을 때 *을 찍어주면 된다.

소스 코드

import java.lang.StringBuilder

fun main() {
    val n = readLine()!!.toInt()
    val sb = StringBuilder()
    for(i in 0 until n){
        for(j in 0 until n * 2){
            when {
                j < i -> sb.append(" ")
                j < n * 2 - i - 1 -> sb.append("*")
            }
        }
        sb.append("\n")
    }
    for(i in n-2 downTo 0){
        for(j in 0 until n * 2){
            when {
                j < i -> sb.append(" ")
                j < n * 2 - i - 1 -> sb.append("*")
            }
        }
        sb.append("\n")
    }
    println(sb.toString())
}
728x90

댓글