728x90
N찍기
문제
자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
출력
첫째 줄부터 N번째 줄 까지 차례대로 출력한다.
예제 입출력
문제풀이
1. Scanner + sout
이번 문제는 풀이를 할 것 없이 매우 간단한 문제였기에 기본적으로 풀 수 있는 Scanner와 sout을 이용한 방법,
Scanner 대신 BufferedReader를 사용한 방법 그리고 마지막으로 sout 대신 BufferedWriter까지 사용한 방법
세 가지로 문제를 풀어보았다.
//Scanner 클래스와 sout으로 작성
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
for(int i = 0; i < num; i++){
System.out.println(i+1);
}
}
}
Scanner와 sout만으로도 문제해결이 가능하였으나 이후 진행할 다른 방법들에 비해 가장 긴 시간이 걸린다.
2. BufferedRead + sout
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
for(int i = 0; i < num; i++){
System.out.println(i+1);
}
}
}
Scanner 대신 BufferedReader를 사용하였다. 시간이 소폭 감소한 것이 확인 가능하였다.
Solution.java
3. BufferedRead + BufferedWirter
import java.io.*;
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 num = Integer.parseInt(br.readLine());
for(int i = 0; i < num; i++){
bw.write(i+1 +"\n");
}
br.close();
bw.flush();
bw.close();
}
}
마지막으로 sout까지 BufferedWriter로 대체해보았다. 아직까지 익숙하지 않아 BufferedReader를 close하지않거나
BufferedWriter를 flush 및 close 해주지 않아 1차례 오류가 발생하였으나 이전 작성해둔 코드를 바탕으로 크게
어렵지 않게 구현되었다. 시간이 대폭 감소된 것도 확인 가능하였다.
앞으로는 의식적으로 Scanner 및 sout 사용을 자제하고 BufferedReader와 BufferedWriter를 사용하도록 해야겠다.
728x90
'🤖Algorithm' 카테고리의 다른 글
[백준] A+B - 8 (feat. BufferedReader, BufferdWriter) (0) | 2022.11.16 |
---|---|
[인프런] 자바 알고리즘 문제풀이 단어 뒤집기 (0) | 2022.10.11 |
[백준] 15552 빠른 A+B Java (0) | 2022.08.01 |
[백준] 2480 주사위 세개 Java (0) | 2022.07.30 |
[백준] 1000 A+B Java (0) | 2022.07.26 |