Programming/알고리즘
[백준] 2438 - 별찍기 - 1 - JAVA[자바]
Gilbert_
2022. 11. 26. 15:28

파이썬에서처럼 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를 이용한 방법이다.