SHUSTORY

[ 백준 ] 15552번 : 빠른 A + B _ JAVA 본문

코딩테스트/JAVA

[ 백준 ] 15552번 : 빠른 A + B _ JAVA

어서오시우 2023. 11. 28. 19:58
728x90
문제

  • BuffredWriter 에 대해 기록하고자 이 문제를 기록한다.

 

BufferedWriter
  • 버퍼를 사용하지 않는 입력은, 키보드의 입력이 키를 누르는 즉시 바로 프로그램에 전달된다.
  • 버퍼를 사용하는 입력은, 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송한다.
    버퍼가 가득 차거나 개행 문자가 나타나면 버퍼의 내용을 한 번에 프로그램에 전달한다.
    버퍼를 사용하는 입출력의 속도가 더욱 빠르다.
  • BufferedReader의 경우 개행문자만 경계로 인식하고 입력받은 데이터가 String으로 고정되기 때문에
    데이터를 따로 가공해야 하는 경우가 많다.
  • BufferedWriter 선언
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
  • write( )
    • bw.write( ) 를 통해 출력할 문자를 작성할 수 있다.
    • BufferedWriter는 System.out.println(""); 처럼 출력과 동시에 개행을 해 주지 않기 때문에,
      개행을 위해서는 newLine( ); 혹은 bw.write("\n");을 사용해야 한다.
  • bw.flush( )
    • bw.write( ) 를 작성해주었다고 콘솔에 바로 출력되는 것은 아니고, bw.flush( ) 를 통해
      출력하고자 하는 문자열을 출력할 수 있다.
  • bw.close( )
    • 출력이 끝났으면, close( ) 를 통해서 스트림을 닫아주면 된다.
    • 만약 flush( ) 를 작성하지 않고 close( ) 해준다면 문자열이 출력되지 않고 스트림이 닫히게 된다.
  • BufferedWriter도 BufferedReader와 마찬가지로 IOException 예외 처리를 반드시 해 주어야 한다.

 

내 풀이
import java.io.*;

public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
String st = br.readLine();
String[] tokens = st.split(" ");
int sum = Integer.parseInt(tokens[0]) + Integer.parseInt(tokens[1]);
bw.write(sum);
bw.newLine();
}
br.close();
bw.flush();
bw.close();
}
}

  • 보다시피.. 출력이 왜이러는거죠??? 이거 아니야? 나 뭐 잘못했지? ㅋㅋㅋㅋ ㅜㅜ 하.. 채찍피티한테 물어보기!
    • 아! BufferedWriter도 BufferedReader와 마찬가지로 문자열만 취급하기 때문에,
      인자로 받은 int형 자료형 변수 sum 값을 문자열로 출력한다는 것이다.
      바보! 그것도 못해!! 그런건 좀 알아서 하란말이야!! ㅋㅋ.. ㅎㅎ.. ㅠ
    • 다시 수정해보면, bw.write(sum) 코드를 bw.write(String.valueOf(sum))과 같이 sum을 문자열로 변환하면 된다.
  • int -> String 형변환
    • Integer.toString( )
    • String.valueOf( )

 

수정한 코드
import java.io.*;

public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
String st = br.readLine();
String[] tokens = st.split(" ");
int sum = Integer.parseInt(tokens[0]) + Integer.parseInt(tokens[1]);
bw.write(String.valueOf(sum));
bw.newLine();
}
br.close();
bw.flush();
bw.close();
}
}

쫘자잔 ~~