2438번: 별 찍기 - 1
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
www.acmicpc.net
문제 : 입력되는 숫자만큼의 별을 찍어라
자바 코드
package Step3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class PrintStars {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
for (int i = 1; i <= count; i++){
for (int j = 0; j < i; j++){
System.out.print("*");
}
System.out.println();
}
}
}
요즘, BufferedReader로 푸는게 약간 중독성이 있어서 포스팅으로도 한 번 또 남겨본다. Scanner보다 훨씬 속도 측면에서 우수한 성능을 보이기 때문에 애용하게 되는 것 같다..헿...
그렇게 어려운 문제는 아니다. 다만, 입력값이 커짐에 따라서 Scanner, BufferedReader, StringBuilder 등을 잘 활용해야한다는 점이다. 그래서 Scanner는 제외하고, StringBuilder 및 BufferedReader & BufferedWriter를 활용한 방법들을 코드로 작성해보았다.
먼저, StringBuilder로 구현한 코드다.
package Step3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class PrintStars2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
br.close();
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);
}
}
처음의 코드와는 크게 다른 점이 없지만 모든 문자열을 하나의 객체(StringBuiler)에 연결한 후, 출력은 마지막에 한 번만 해주니 시간을 아낄 수 있는 방법 중 하나다.
다음은 BufferedWriter를 활용한 방법이다.
package Step3;
import java.io.*;
public class PrintStars3 {
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 <= i; j++) {
bw.write('*');
}
bw.newLine();
}
bw.flush();
bw.close();
}
}
위에부터 순서대로
BufferedRead & Writer
StringBuilder
BufferedRead 사용한 방법이다.
확실히, Scanner보단 더 나은 성능을 보여주는 것을 알 수 있다. 앞으로 백준 문제에서 대용량 입출력 문제가 나올시엔.. 필수적으로 BufferedRead & Writer를 적극 사용해보는 것으로...ㅎㅎ
'Programming > Algorithm' 카테고리의 다른 글
[백준] 1110번 : 더하기 사이클 (0) | 2021.10.29 |
---|---|
[백준] 팩토리얼 (0) | 2021.10.28 |
[백준] 3052번 : 나머지 (Java) (0) | 2021.10.27 |
[백준] 빠른 A+B (JAVA) (0) | 2021.10.20 |
선형 리스트 (Linear List) (0) | 2021.09.27 |