[java] 입출력
정수를 입력받을 때
- 공백 또는 다음줄에 입력받을 때 모두
nextInt()
를 사용한다.
빠른 입출력
-
본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
-
Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.
-
Java는 BufferedWriter 외에도, StringBuilder로 출력을 모아 놓았다가 그 String을 System.out.println하는 방법도 있습니다.
-
Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.
-
또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.
BufferedReader와 BufferedWriter
-
Scanner와 System.out.println보다 빠르다.
-
Buffer : 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 임시 메모리 영역
- BufferedReader
- Scanner와 같은 기능을 한다.
- 엔터만 경계로 인식한다
- 받은 데이터가 String으로 고정된다.
- BufferedWriter
- System.out.println과 같은 기능을 한다.
- 출력과 개행을 동시에 해주지 않는다.
- BufferedWriter.flush
- 버퍼를 비우는 동작이다.
- 버퍼에 남아있는 데이터를 출력시킨다.