1. 문제
◽ 주소 : https://www.acmicpc.net/problem/10718
◽ 문제 내용 :
2. 풀이
◽ 풀이 1 : System.out.print() 사용 (System 클래스 - 표준입출력)
public class Main{
public static void main(String[] args) {
System.out.println("강한친구 대한육군");
System.out.println("강한친구 대한육군");
//아래경우가 더 오래걸림
//System.out.print("강한친구 대한육군\n강한친구 대한육군");
}
}
- 자바 배울때 제일 먼저 배우고 가장 흔하게 사용하는 방법이다.
- 하지만 속도면에서 매우 느린편에 속한다. 왜냐하면 리소스를 많이 사용하여 성능 부하를 초래하기 때문이다.
- 입출력이 많은 코드에서는 지양하는 것이 좋다.
- println() : 출력하고 한줄 뜀 / print : 출력
◽ 풀이 2 : BufferedWriter 사용
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("강한친구 대한육군");
bw.newLine();
bw.write("강한친구 대한육군");
bw.flush();
bw.close();
}
}
- BufferedWriter은 Buffer에 있는 IO 클래스로 데이터를 버퍼에 저장해두었다가 한번에 출력하는 방식으로 동작한다.
- 데이터를 하나씩 출력하는 것이 아니라 한번에 출력하므로 속도가 빠르다.
- 입출력이 많은 코드에서 지향하는 방식이다.
- bw.close() 하기 전에 꼭 bw.flush()를 하여 출력하고 스트림을 비워준다.
◽ 속도 비교
- 1번 풀이 :
- 2번 풀이 :
- 단순한 한 문장 출력이여서 System.out.print() 방식이 좀 더 빠르다.
- 1번 풀이 하단은 println() 사용했으며 상단은 print("\n") 사용했다.
println()이 더 빠른 이유는 중간 과정에 파싱 과정이 없기 때문일것 같다.
- 하지만 입출력의 횟수가 많아지거나 복잡해질수록 BufferedWriter을 사용한 방식이 좀 더 빨라진다.
3. 참고
◽ BufferedWriter 정리