본문 바로가기

백준

입출력 정리

 

참고 블로그 : https://m.blog.naver.com/ka28/221850826909

 

 

 

요약

BufferedReader : 한 줄 읽어들이기 위해

StringTokenizer : 한 줄 읽은 거 자르기 위해

 

* 참고. 문자열 자르기는 String의 subString()과 split()도 있음. #11721 포스팅 참고

 

 

 

 

 

  BuffredReader 사용법  

 

 

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = bf.readLine(); //String
int i = Integer.parseInt(bf.readLine()); //Int

 

 

< readLine() 사용 시 주의점 >

1.  readLine()시 리턴값을 String으로 고정되기에 String이 아닌 다른 타입으로 입력을 받을려면 형 변환을 꼭 해주어야한다.

2. 예외처리를 꼭 해주어야한다는 점이다. readLine을 할때마다 try & catch를 활용하여 예외처리를 해주어도 되지만 대개 throws IOException을 통하여 작업한다.

* 참고로 readLine()은 읽을 데이터가 없을 시 null을 반환.

 

 

 



 Read한 데이터(Line단위)를 공백 단위로 가공  

 

 

StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken()); //첫번째 호출
int b = Integer.parseInt(st.nextToken()); //두번째 호출
String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음

 

 

1. StringTokenizer에 nextToken()함수를 쓰면 readLine()을 통해 입력받은 값을 공백 단위로 구분하여 순서대로 호출할 수 있다. 

2. String.split()함수를 활용하여 배열에 공백단위로 끊어서 데이터를 넣고 사용하는 방식이다.

 


> 1이 성능 측면에서 훨씬 우수