[Python] 파이썬 빠른 입력 (sys.stdin.readline())

codesigner·2023년 10월 18일

Python

목록 보기
1/3

파이썬에서 입력받는 방법

파이썬의 가장 기본적인 입력 방식으로는 input() 이라는 내장함수를 이용하는 방법이 있다.
하지만 input()의 경우 처리속도가 느리기 때문에 알고리즘 문제 풀이에서 반복문을 통해 여러 줄을 입력받는 경우 시간 초과가 발생할 수 있다.
이러한 문제를 해결하기 위한 방법으로 sys.stdin.readline()을 통해 입력을 받는 방법이 있다.


input() vs sys.stdin.readline()

sys.stdin.readline()은 기본적으로 input()과 같은 역할을 수행하지만 몇 가지 다른 부분이 존재한다.

  1. input()과 달리 프롬프트를 출력할 수 없다.
    괄호 안에 문자열을 넣어 프롬프트를 출력하는 것이 불가능하다.
  2. import sys을 통해 'sys 모듈' 을 불러온 뒤 사용해야 한다.
    sys.stdin.readline()은 파이썬 내장함수가 아니기 때문에 모듈을 불러와 사용해야 한다.
  3. sys.stdin.readline()으로 문자열을 받아오는 경우 맨 뒤에 개행문자 \n이 삽입된다.
    input()처럼 사용하고 싶다면 뒤에 .rstrip()을 붙여 개행문자를 제거해 줄 수가 있다.

sys.stdin.readline()은 프롬프트를 출력하지 않고 개행문자를 제거하는 과정이 생략되어 있으며, 문자를 한번에 읽어와 버퍼에 저장하기 때문에 input()에 비해 처리속도가 더 빠르다는 장점이 있다.


sys.stdin.readline() 사용법

문자열을 입력받는 방법

import sys
s = sys.stdin.readline().rstrip()

sys.stdin.readline() 또한 기본적으로 'str' 자료형으로 받아오게 되므로 따로 형변환 필요없이 .rstrip()으로 개행문자만 제거해주면 된다.

정수를 입력받는 방법

import sys
n = int(sys.stdin.readline())

입력받은 값을 정수로 사용하기 위해서는 int()를 통해 형변환을 해주어야 한다.
이 경우에는 형변환 과정에서 개행문자가 제거되므로 .rstrip()을 사용하지 않아도 된다.

여러 개의 문자를 입력받는 방법

import sys
a, b = sys.stdin.readline().split()

여러 개의 값을 입력받을 때에는 여러 개의 변수를 ,로 구분한 뒤 .split()을 통해 공백을 기준으로 나누어 줄 수 있다.
이 경우에도 .split()을 사용할 때 개행문자가 제거되므로 .rstrip()을 사용하지 않아도 된다.

문자열 리스트로 입력받는 방법

import sys
lst = sys.stdin.readline().split()

.split()을 했을 때의 자료형은 기본적으로 'list' 로 저장되므로 변수가 하나라면 리스트로 저장된다.

여러 개의 정수를 입력받는 방법

import sys
a, b = map(int, sys.stdin.readline().split())

여러 개의 값을 입력받은 후 map()을 이용하여 동시에 형변환이 가능하다.

정수 리스트로 입력받는 방법

import sys
lst = list(map(int, sys.stdin.readline().split()))

map()을 사용한 경우 'map' 자료형으로 변하게 되므로 리스트의 기능을 전부 이용하려면 list()를 통해 다시 'list' 자료형으로 형변환 해주어야 한다.

profile
SAMSUNG SDS SW Engineer

0개의 댓글