PS(Problem Solving)/BOJ

[백준/BOJ] 2439번: 별 찍기 - 2

JunsuKim 2021. 11. 10.
728x90

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

 

2439번: 별 찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

해설

우선 1부터 n행까지의 출력을 위해 반목문을 만든다.

이제 각 행에 별이 찍히는 위치를 보도록 하자.

시작점을 0으로 보면 1행에는 n-1번째 자리에 별이 찍혔고, 2행은 n-2, n-1번째 잘이 별이 찍혀있고,

3행은 n-3, n-2, n-1에 찍혀있다.

여기까지 봤으면 규칙을 눈치챌 수 있을 것이다.

바로 n - (행 - 1)보다 값이 크다면 별이 찍히는 것을 볼 수 있다.

이번에는 메모리와 시간을 줄이고 싶어 StringBuilder를 사용했다.

일일이 출력하는 것보다 StringBuilder에 추가한 후 한 번에 문자열 형식으로 출력을 하여 메모리와 시간을 줄일 수 있었다.

소스 코드 

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){
            if(j >= n - i - 1) sb.append("*")
            else sb.append(" ")
        }
        sb.append("\n")
    }
    println(sb.toString())
}
728x90

'PS(Problem Solving) > BOJ' 카테고리의 다른 글

[백준/BOJ] 2440번: 별 찍기 - 3  (0) 2021.11.16
[백준/BOJ] 2355번: 시그마  (0) 2021.11.15
[백준/BOJ] 2061번: 좋은 암호  (0) 2021.11.09
[백준/BOJ] 16428번: A/B - 3  (0) 2021.11.09
[백준/BOJ] 2438번: 별 찍기 - 1  (0) 2021.11.08

댓글