Progamming/BAEK JOON > 백준의 알고리즘

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

코딩밤 2023. 3. 2. 16:18
300x250

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

 

2439번: 별 찍기 - 2

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

www.acmicpc.net

 

 

문제

백준 알고리즘 2439번 문제 이미지

문제를 보며 생각

이전 문제 별 찍기 -1와 비슷하다.

입력 : N

1행부터 N행까지 출력을 하기 위해 행을 반복하는 큰 틀의 반복문을 구상합니다.

:  첫 행에 1개.. 두 번째 행에 2개 · · · · ·

공백 : 첫 행에 4개.. 두번째 행에 3개 · · · · ·

별은 행 만큼 증가하니 N - i(행) 의 값으로 공백을 출력해 주면 되겠다.

필요한 반복문으로는.. 행 반복문, 공백 반복문, 별 반복문 이 되겠다.

 

 

풀이
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();

        for(int i = 1; i <= N; i++) {		// 행 반복
            for(int j = 1; j <= N - i; j++){	// 공백 반복
                System.out.print(" ");
            }
            for(int k = 1; k <= i; k++){	// 별 반복
                System.out.print("*");
            }
            System.out.println();		// 줄 바꿈
        }
    }
}

Scanner 로 입력받는 방법이다.

 

풀이 2
import java.io.*;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int N = Integer.parseInt(br.readLine());

        for(int i = 1; i <= N; i++){
            for(int j = 1; j <= N - i; j++){
                bw.write(' ');
            }
            for(int k = 0; k < i; k++) {
                bw.write('*');
            }
            bw.newLine();
        }
        br.close();
        bw.flush();
        bw.close();
    }
}

Buffered를 이용한 입출력을 사용했습니다.

BufferedWriter는 출력할 문자가 많아질수록 다른 출력문에 비해 빠른 성능을 보여줍니다.

 

300x250

 

300x250