728x90

프로그래밍 대회나 알고리즘 문제를 풀 때, 입출력 속도는 매우 중요합니다. 특히 파이썬은 다른 언어에 비해 입출력 속도가 느린 편이기 때문에, 기본 입출력 방법을 사용하면 시간 초과가 발생할 수 있습니다. 이 글에서는 파이썬에서 데이터를 빠르게 입출력하는 방법을 소개하겠습니다.

 

빠른 입력

기본적으로 파이썬에서는 input() 함수를 사용하여 입력을 받습니다. 하지만 이 함수는 내부적으로 버퍼링을 하지 않아 속도가 느립니다. 따라서 sys.stdin.readline() 함수를 사용하여 입력 속도를 향상시킬 수 있습니다.

import sys

data = sys.stdin.readline().rstrip()
  • sys.stdin.readline()은 한 줄의 입력을 빠르게 받아옵니다.
  • 입력받은 문자열의 끝에는 줄바꿈 문자(\n)가 포함되므로, rstrip() 함수를 사용하여 이를 제거합니다.

매번 sys.stdin.readline()을 쓰는 것이 번거롭다면, input 함수를 재정의하여 사용할 수 있습니다.

 
import sys

input = sys.stdin.readline

data = input().rstrip()

이렇게 하면 기존의 input() 함수를 sys.stdin.readline()으로 대체하여 사용할 수 있습니다..

 

빠른 출력

파이썬의 print() 함수는 사용하기 편리하지만, 출력 속도가 느립니다. 특히 반복문에서 많은 양의 데이터를 출력할 때는 sys.stdout.write() 함수를 사용하는 것이 좋습니다.

import sys

sys.stdout.write('Hello World\n')
  • sys.stdout.write()는 문자열만 출력할 수 있으므로, 숫자를 출력하려면 문자열로 변환해야 합니다.
  • 기본적으로 줄바꿈(\n)을 해주지 않기 때문에 필요하면 문자열 끝에 \n을 추가해야 합니다.

print 함수도 sys.stdout.write로 재정의할 수 있습니다.

import sys

print = sys.stdout.write

print('Hello World\n')

 

예제 코드

입력 예제

import sys

input = sys.stdin.readline

n = int(input())
arr = list(map(int, input().split()))
  • 첫째 줄에 정수 n을 입력받고, 둘째 줄에 n개의 정수를 입력받아 리스트 arr에 저장합니다.

출력 예제

import sys

print = sys.stdout.write

result = 42
print(str(result) + '\n')
  • 결과를 출력할 때는 숫자를 문자열로 변환하고, 줄바꿈 문자를 추가합니다.