본문 바로가기

알고리즘, 자료구조

[백준| 단계별로 풀어보기 3단계 반복문 | Python] 15552번 빠른 A + B

문제 목적

백준 15552번 문제는 빠르게 여러 쌍의 정수를 입력받아 각 쌍의 합을 출력하는 문제입니다. 이 문제는 대량의 데이터를 효율적으로 처리하는 방법을 연습하는 데 목적이 있으며, 특히 Python에서 입출력 속도를 향상시키기 위한 기법을 익히는 데 중점을 둡니다.

핵심 개념

  • 빠른 입출력 처리: 표준 입력(input())과 출력(print()) 대신, 더 빠른 입출력 함수를 사용하는 방법을 이해합니다.
  • 반복문: 주어진 데이터 쌍을 처리하기 위해 반복문을 사용하는 방법을 익힙니다.

문제 해결 절차

  1. 데이터 개수 입력 받기: 테스트 케이스의 개수 T를 입력받습니다.
  2. 데이터 쌍 처리: T번 반복하며 각 쌍의 정수 A, B를 입력받고, 그 합을 계산합니다.
  3. 결과 출력: 계산된 각 합을 출력합니다. 단, 빠른 입출력을 위해 sys.stdin.readline과 sys.stdout.write를 사용합니다.
import sys

# 데이터 개수 입력 받기
T = int(sys.stdin.readline())

# 데이터 쌍 처리 및 결과 출력
for _ in range(T):
    A, B = map(int, sys.stdin.readline().split())
    sys.stdout.write(str(A + B) + '\n')

코드 분석

  • sys.stdin.readline(): Python의 input() 함수보다 빠른 입력을 위해 사용됩니다. 줄 바꿈 문자(\n)를 포함해 한 줄을 입력받으므로, 필요에 따라 .strip()을 사용해 줄 바꿈 문자를 제거할 수 있습니다. 여기서는 map(int, ...)를 사용하여 직접 정수로 변환하기 때문에 .strip()이 필요하지 않습니다.
  • sys.stdout.write(): Python의 print() 함수보다 빠른 출력을 위해 사용됩니다. 자동으로 줄 바꿈을 하지 않기 때문에, 문자열 끝에 직접 \n을 추가하여 줄 바꿈을 해주어야 합니다.
  • 이 코드는 주어진 테스트 케이스 수(T)만큼 반복하며, 각 반복마다 두 정수 A, B를 입력받아 이들의 합을 즉시 출력합니다. 이렇게 함으로써 대량의 데이터 처리 시에도 효율적인 실행이 가능합니다.

마무리

sys.stdin.readline()문이 대량의 입력데이터를 처리하는데 유리하다는 것을 알았다.

input()은 sys.stdin.readline()을 포함하고 줄바꿈을 제거한다는 것을 알았다.