Algorithm/Baekjoon

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

unknownomad 2022. 2. 22. 15:45

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

 

2439번: 별 찍기 - 2

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

www.acmicpc.net



참고 유형

https://unknownomad.tistory.com/102

 

[백준] 2438번 : 별 찍기 - 1 - Java

https://www.acmicpc.net/problem/2438 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 알고리즘 for ( int i = 1 ; i <= N ; i++ ) { //행 개..

unknownomad.tistory.com


알고리즘

for (int i = 1; i <= N; i++) { //행 개수
    for(int j = 1; j <= N-i; j++) { //각 행마다의 공백 개수
        print(" "); //각 행의 공백 출력, println() 절대 안 됨!
    }
    for(int k = 1; k <= i; k++) { //각 행마다의 별 개수
        print("*"); //각 행의 별 출력, println() 절대 안 됨!
    }
}

구현 방법

입력

  • Scanner
  • BufferedReader + StringTokenizer / String.charAt()
    * 자료형 타입 주의!
    * st.nextToken(): 문자열 반환 ➡ Integer.parseInt()로 int형으로 변환시켜야 함

출력

  • System.out.println()
  • BufferedWriter
    * BufferedWriter.write(): 단독으로 int형 값만 넣으면 아스키 코드값으로 인식되기에 다른 문자가 출력됨
    ➡ 반드시 문자열과 int형을 함께 넣어야 int값 제대로 출력
  • StringBuilder

풀이

1. Scanner

import java.util.Scanner;

public class Main { 
    public static void main(String[] args) {
    
        Scanner in = new Scanner(System.in);
        int N = in.nextInt();
        in.close();
 
        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= N - i; j++) {
                System.out.print(" ");
            }
            for (int k = 0; k < i; k++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

2. BufferedReader

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
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());
        br.close();
 
        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();
        }
    }
}

 

3. BufferedReader + BufferedWriter

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
 
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());
        br.close();
 
        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= N - i; j++) {
                bw.write(" ");
            }
            for (int k = 1; k <= i; k++) {
                bw.write("*");
            }
            bw.newLine();
        }
        bw.flush();
        bw.close();
    }
}

 

4. BufferedReader + StringBuilder

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

성능

  • BufferedReader > Scanner
  • BufferedWriter / StringBuilder > System.out.println()

 


출처 : https://st-lab.tistory.com/36