문제 목적
백준 15552번 문제는 빠르게 여러 쌍의 정수를 입력받아 각 쌍의 합을 출력하는 문제입니다. 이 문제는 대량의 데이터를 효율적으로 처리하는 방법을 연습하는 데 목적이 있으며, 특히 Python에서 입출력 속도를 향상시키기 위한 기법을 익히는 데 중점을 둡니다.
핵심 개념
- 빠른 입출력 처리: 표준 입력(input())과 출력(print()) 대신, 더 빠른 입출력 함수를 사용하는 방법을 이해합니다.
- 반복문: 주어진 데이터 쌍을 처리하기 위해 반복문을 사용하는 방법을 익힙니다.
문제 해결 절차
- 데이터 개수 입력 받기: 테스트 케이스의 개수 T를 입력받습니다.
- 데이터 쌍 처리: T번 반복하며 각 쌍의 정수 A, B를 입력받고, 그 합을 계산합니다.
- 결과 출력: 계산된 각 합을 출력합니다. 단, 빠른 입출력을 위해 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()을 포함하고 줄바꿈을 제거한다는 것을 알았다.
'알고리즘, 자료구조' 카테고리의 다른 글
[백준| 단계별로 풀어보기 3단계 반복문 | Python] 10951번 A + B 예외처리 (0) | 2024.04.03 |
---|---|
[백준| 단계별로 풀어보기 3단계 반복문 | Python] 10952번 A + B 입력처리 (1) | 2024.04.03 |
[백준| 단계별로 풀어보기 3단계 반복문 | Python] 25304번 영수증 (0) | 2024.04.03 |
[백준| 단계별로 풀어보기 2단계 | Python] 2884번 알람 시계 (0) | 2024.04.02 |
[백준| 단계별로 풀어보기 1단계 | Python] 2588번 곱셈 (0) | 2024.04.01 |