본문 바로가기
백준

[백준] 2441번 : 별 찍기 - 4 – JAVA [자바]

by Hongwoo 2022. 7. 10.
반응형

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

 

2441번: 별 찍기 - 4

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2441번 별 찍기 - 4는 브론즈 3 난이도의 구현 문제이다. 이 문제에서는 자연수 N이 주어진다. 그리고 첫째 줄에는 별 N개, 둘째 줄에는 N - 1개, 그리고 마지막 줄에는 별 1개를 출력하면 된다. 단, 별들은 오른쪽을 기준으로 정렬된 상태로 출력하면 되는 문제이다.

 

이 문제도 다른 별 찍기 문제들과 마찬가지로 이중 for-loop을 이용해서 풀 수 있다. 첫째 줄에 별 N개를 출력해야 하므로 바깥 for-loop은 int i = N부터 i >= 1까지 돌린다. 그리고 이 바깥 for-loop안에 또 다른 for-loop 2개를 써줘야 한다. 왜냐하면 별들이 오른쪽을 기준으로 하기 때문에 공백 (" ")도 출력해줘야 하고 별들도 출력해줘야 하기 때문이다.

 

첫 째 줄에는 공백이 없고 그다음 줄에는 공백이 1개가 있다. 그리고 마지막 줄에는 공백이 N - 1개가 있다. 즉 for-loop은 int j = 0부터 j = N -1까지 돌리고 공백을 출력해주면 된다.

 

그리고 그다음은 별을 출력해줘야 한다. 첫째 줄에는 별 N개, 둘째 줄에는 N - 1개, 마지막 줄에는 별 1개가 있다. 근데 바깥 for-loop의 i가 1씩 감소한다. 따라서 int j = 1부터 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 = n; i >= 1; i--) {
            for (int j = 0; j < n-i; j++) {
                sb.append(" ");  //공백 출력
            }
            for (int j = 1; j <= i; j++) {
                sb.append("*");  //별 출력
            }
            sb.append("\n");
        }
        System.out.print(sb);
    }
}

 

 

반응형

댓글