[Java] 코딩테스트를 위한 입출력 팁

Kim Ji Eun·2022년 1월 6일
4

1. 자바의 입력 클래스

  • Scanner, BufferedReader, StringTokenizer
  • BufferedReader, StringTokenizer 는 문자열로 활용하기 위해 사용
  • BufferedReader를 사용하는 것이 Scanner를 사용하는 것보다 빠르다

BufferedReader 사용

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();

StringTokenizer

  • StringTokenizer는 공백이 있을 때 뒤에 문자열이 공백처리를 땡겨 채우도록 한다.
  • StringTokenizer가 BufferedReader보다 빠르게 사용 될 수 있다

<StringTokenizer를 사용했을 때>

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());

String A = st.nextToken();
String B = st.nextToken();
String C = st.nextToken();
String D = st.nextToken();


<BufferedReader를 사용했을 때>

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String[] input = br.readLine().split(" ");

2. 자바의 출력 클래스

  • System.out.println(""), BufferdWriter, StringBuilder
  • 일반적으로 출력할 때 System.out.println("")를 사용한다. 적은 양의 출력에서는 편리하고 성능 차이가 없지만 많은 양의 출력을 할 때는 BufferedWriter이나 StringBuilder를 사용하는 것이 좋다

BufferedWriter

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 선언
String str = "abcdef"; // 출력할 문자열
bw.write(s); // 출력
bw.newLine(); // 줄바꿈
bw.flush(); // 남아있는 데이터 모두 출력
bw.close();

BufferedWriter는 버퍼를 잡아 놓은 것이기에 반드시 사용후에 flush()/close()를 해주어야한다. close()를 하게되면 출력 스트림을 아예 닫아버리기 때문에 한번 출력후에 다른 것도 출력하고자 한다면 flush()를 사용하면 된다


StringBuilder

그냥 문자열이기 때문에 매우 간단하다

StringBuilder sb = new StringBuilder();
sb.append("a");
sb.append("b").append(" ");
sb.append("c").append("\n");
System.out.println(sb);

참고

https://sangwoo0727.github.io/java/JAVA-20_input/
https://wkimdev.github.io/java/2018/04/06/java-io-bufferedreader/
https://rlakuku-program.tistory.com/33
https://code0xff.tistory.com/10

profile
Back-End Developer

0개의 댓글