728x90
https://www.acmicpc.net/problem/2439
문제
첫째 줄에는 별 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 |
댓글