백준 - Java

[ 백준 - 2439 ] [Java] 별 찍기 - 2

SeongJo 2022. 5. 8. 03:03
반응형

 

이 포스팅은 자바 8버전으로 풀이가 됐습니다.

 

문제

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

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

입력

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

출력

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

코드

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
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
    public static void main(String[]args) throws IOException {    
        try {
            BufferedReader s_rd = new BufferedReader(new InputStreamReader (System.in));
            
            String text= s_rd.readLine();
            int a = Integer.parseInt(text);
            
            for(int i=1; i<=a;i++) {
                for(int j=a;j>i;j--) {
                    System.out.print(" ");
                }
                for(int j=0;j<i;j++) {
                    System.out.print("*");                    
                }
                System.out.println();
            }
        }
        catch(IOException e) {
        }
    }
}
 
 

풀이

값을 입력받은 만큼 반목문을 반복한다.

예제에서는 5를 입력했다. 그렇다면 5가 입력된 경우 다음과 같은 표를 가져야 한다.

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

역으로 생각하면 첫 줄에 공백 4칸 이후 3칸, 2칸, 1칸으로 마지막에는 공백이 출력되지 않아야 한다.

가장 간편한 방법으로 생각해낸 부분으로 입력받은 a변수 값보다 i가 클 때까지 공백을 주고 반복문을 종료하면 된다.

tmi) i를 1로 초기화했기 때문에 첫 줄에 *가 한칸 나올 수 있다.

이후 for 문을 사용하여 *를 출력한다.


오타가 있거나 문제가 이해가 안 되는 경우 댓글 부탁드리겠습니다!

짧은 포스팅 읽어주셔서 감사드립니다.

다음 포스팅 때 뵙겠습니다.

반응형