백준 15552번: 빠른 A+B

hoon·2024년 10월 30일

백준

목록 보기
5/44


코드 설명

1. 입출력 스트림 생성

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
  • BufferedReader:

    • 입력을 빠르게 처리하기 위해 버퍼를 사용하는 클래스입니다.
    • System.in(표준 입력)으로부터 데이터를 읽습니다.
    • 메서드 readLine()을 사용하여 한 줄씩 입력을 읽습니다.
  • BufferedWriter:

    • 출력을 빠르게 처리하기 위해 버퍼를 사용하는 클래스입니다.
    • System.out(표준 출력)으로 데이터를 출력합니다.
    • 메서드 write()를 사용하여 출력 내용을 작성합니다.

2. 테스트 케이스 수 입력

int T = Integer.parseInt(br.readLine());
  • br.readLine():
    • 한 줄의 입력을 읽습니다.
    • 입력은 문자열로 반환되므로, 숫자로 변환하기 위해 Integer.parseInt()를 사용합니다.
  • 예를 들어, 사용자가 3을 입력하면 변수 T3이 저장됩니다.

3. 반복문으로 입력과 계산 처리

for (int i = 0; i < T; i++) {
    StringTokenizer st = new StringTokenizer(br.readLine());
    int a = Integer.parseInt(st.nextToken());
    int b = Integer.parseInt(st.nextToken());
    bw.write(a + b + "\n");
}
  1. 반복문 (for):

    • T개의 테스트 케이스를 처리하기 위해 반복문을 사용합니다.
    • i = 0부터 i < T까지 실행되므로 총 T번 반복합니다.
  2. StringTokenizer로 입력 분리:

    • StringTokenizer는 문자열을 특정 구분자로 나누는 클래스입니다.
    • br.readLine()을 사용하여 한 줄의 입력을 읽고, 공백을 기준으로 두 숫자를 분리합니다.
    • 예를 들어, 입력이 3 5라면:
      • 첫 번째 토큰: "3"
      • 두 번째 토큰: "5"
  3. Integer.parseInt로 숫자 변환:

    • st.nextToken()으로 각각의 숫자를 문자열로 읽은 후, Integer.parseInt()를 사용해 정수로 변환합니다.
  4. 두 숫자의 합 계산 및 출력 작성:

    • a + b를 계산한 뒤, 결과를 BufferedWriterwrite() 메서드를 사용해 출력 버퍼에 저장합니다.
    • 각 결과 뒤에는 \n(줄바꿈)을 추가하여 출력 포맷을 맞춥니다.

4. 출력 플러시 및 스트림 종료

bw.flush();
bw.close();
  • flush():
    • 출력 버퍼에 저장된 내용을 실제로 출력합니다.
  • close():
    • 스트림을 닫아 리소스를 해제합니다.

실행 흐름 예시

입력:

3
1 2
3 4
5 6
  1. 첫 번째 줄에서 테스트 케이스 수 T = 3을 읽습니다.
  2. 각 줄에서 두 개의 숫자를 읽고 합을 계산하여 출력 버퍼에 저장합니다:
    • 첫 번째 줄: 1 + 2 = 3
    • 두 번째 줄: 3 + 4 = 7
    • 세 번째 줄: 5 + 6 = 11

출력:

3
7
11

이 코드의 특징

  1. 빠른 입출력:

    • 많은 양의 입력/출력을 처리할 때 BufferedReaderBufferedWriter를 사용하면 성능이 향상됩니다.
    • 특히, 반복적으로 입력을 처리하고 출력해야 하는 경우 유리합니다.
  2. StringTokenizer 사용:

    • 공백으로 구분된 여러 입력을 손쉽게 처리할 수 있습니다.
  3. 출력 최적화:

    • 모든 출력을 한꺼번에 처리하므로 I/O 연산의 오버헤드가 줄어듭니다.

요약

이 코드는 BufferedReaderBufferedWriter를 사용하여 빠른 입출력 처리를 구현한 예제입니다. 사용자는 두 숫자를 입력하면 합계를 계산하여 출력합니다. 이 방식은 특히 대규모 입력과 출력이 필요한 문제에서 유용합니다. 추가로 궁금한 점이 있으면 알려주세요! 😊

0개의 댓글