본문 바로가기

Programming/알고리즘

[백준] 2438 - 별찍기 - 1 - JAVA[자바]

파이썬에서처럼 System.print.out("*" * i); 로 해서는 안된다.
String * int 는 JAVA에서 지원하지 않는다.

 

 

이중 반복문을 통하여 출력하여 주어야 한다.

 

 

방법 1. StringBuilder를 이용

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;

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=1; j <= i; j++)
        	    sb.append("*");
            }
            sb.append("\n");
        }
        
        System.out.print(sb);
    }
}

 

br.readLine(); 은 문자열로 추출되므로, 정수로 쓰고자한다면 Integer.parseInt()를 통해 변화시켜주어야한다.

 

Stringbuilder를 사용한다면

모든 문자열을 하나의 객체에 쌓아 놓은 뒤
출력은 마지막에 한 번만 해주니 시간을 아낄 수 있는 방법 중 하나다.

 

 

 

2. BufferedWriter를 이용

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

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());
        
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        for (int i = 1; i <= N; i++){
            for (int j=1; j <= i; j++){
                bw.write("*");
			}
			bw.write("\n");
        }
        bw.flush();
        bw.close();
    }
}

 

 

BufferedWriter 는 출력할 문자들이 많아지면 많아질수록 다른 출력 방법들에 비해 매우 우수한 성능을 보여준다.

 

아래것이 StringBuilder를 이용,

위의 것이 BufferedWriter를 이용한 방법이다.