본문 바로가기
백준

[백준] 2439번 : 별 찍기 - 2 – JAVA [자바]

by Hongwoo 2022. 6. 23.
반응형

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

 

2439번: 별 찍기 - 2

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

 

백준 2439번 별 찍기 - 2는 브론즈 4 난이도의 구현 문제이다. 이 문제도 전에 풀었던 별 찍기 문제와 상당히 비슷한 문제이다. 이 문제도 첫째 줄부터 N번째 줄까지 차례대로 별을 출력하는 문제이다. 하지만, 이전 문제와 다른 점은 별이 오른쪽 기준으로 있다는 것이다. 

 

문제에서 주어진 예제를 한번 보겠다. N = 5일 때 별을 출력하면 다음과 같다.

    *

   **

  ***

 ****

*****

 

즉, 첫 번째 줄에는 4개의 스페이스가 있다. 두 번째 줄에는 3개의 스페이스가 있다. 즉, i번째를 할 때 n - i개의 스페이스를 먼저 출력해주고 그다음에 i개의 별을 출력해주면 된다는 것이다.

 

이 문제도 for-loop을 이용해서 풀 수가 있다. 다만 이 문제에서는 이중 for-loop을 이용해서 풀 것이다. 바깥 loop은 int i = 1부터 i = n까지이고 내부에 있는 for-loop은 2개가 필요하다. 

 

우선 int j = n - i부터 j >= i일 때 까지는 스페이스를 출력해준다. 그리고 int j = 1부터 int j <= i까지는 별을 출력해준다. 자세한 코드는 밑에 있다.

 


  • 코드

 

import java.io.*;
import java.util.*;
public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= n; i++) {
            for (int j = n-i; j >= 1; j--) {
                sb.append(" ");
            }
            for (int j = 1; j <= i; j++) {
                sb.append("*");
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

 

반응형

댓글