본문 바로가기
언어/JAVA

[Java] 출력 3가지 방법

by minhyeok.lee 2023. 2. 1.
반응형

자바(Java)

 

 어제 입력에 이어서 자바에서 기본적으로 쓰이는 출력과 백준, 프로그래머스 등 알고리즘을 풀 때 시간단축에 욕심이 있는 분들이 보시면 좋다고 생각이 든다.


 기본적인 입력
(1) System.out.println(); or System.out.print();

ln이 붙어있으면 개행이 됩니다. System.out.println(); 은 System.out.print('\n');과 동일합니다.


 버퍼를 사용하는 출력인
(2) BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(  // 들어갈 내용  ); write()안에 .. 즉 버퍼안에 데이터를 넣어준다

bw.flush(); // 버퍼를 비워주는 것(실제 출력이 이루어 진다.)

bw.close(); // 버퍼를 닫아준다.

 


그 다음으로 필자가 알고리즘 문제를 풀때 자주 사용하는 한번에 모아서 출력하는
(3) StringBuilder sb = new StringBuilder();
sb.append(  // 들어갈 내용  );

System.out.print(sb);

 


보통 많이 사용하는 (1) 출력 방식인 System.out.println() 혹은 System.out.print()를 많이 사용합니다.
자바 표준 출력이기도 하고.. 출력은 입력처럼 시간의 차이가 심하지 않기 때문에 백준 15552같은 빠른 A+B와 같은 문제가 아니면 입력만 바꿔주어도 충분한 시간 감소를 보실 수 있습니다.


(2)같은 경우에는 System.out.println()을 사용하는 것이 아닌 보통 flush()를 통해 버퍼에 있는 모든 데이터를 내보냅니다.
(3)같은 경우에는 sb에 데이터를 저장해주고 한번의 System.out.print()을 통해 모아둔 데이터를 한번에 출력하기 때문에 알고리즘 문제를 풀 때 많은 출력을 하는 것보다 시간적으로 훨씬 유리합니다.

 

(2)번은 버퍼에 모아두고 출력, (3)번은 문자열에 모아두고 출력이라는 점에서 출력 알고리즘 자체는 동일하다.
데이터 양이 적으면 StringBuilder > BufferedWriter로 StringBuilder가 빠른 속도를 보이고 양이 많아지면 많아질 수록  StringBuilder < BufferedWriter로 BufferedWriter가 더 빨라지게 된다. 알고리즘 코딩 테스트에서 문제를 풀 때 문제 알고리즘을 동일하게 유지하고 입, 출력만 바뀌어도 입력 혹은 출력이 많은 문제는 정말 시간이 절반이상 줄어들기도 한다.

반응형

'언어 > JAVA' 카테고리의 다른 글

[Java] PECS(Producer-Extends, Consumer-Super) 공식  (0) 2023.02.14
[Java] 와일드카드 <?>  (0) 2023.02.13
[Java] 제네릭(Generic)  (0) 2023.02.13
[Java] 입력 3가지 방법  (0) 2023.02.01

댓글