오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-19 08:40
관리 메뉴

우노

[Python] 파이썬 빠르게 입력 받기 (sys.stdin.readline) 본문

Language/Python

[Python] 파이썬 빠르게 입력 받기 (sys.stdin.readline)

운호(Noah) 2022. 6. 12. 15:06

들어가기 앞서,

  • 입력 데이터의 개수가 많은 문제를 풀 때, input() 함수를 사용하면, 동작 속도가 느려서 시간 초과로 인한 오답 판정을 받을 수 있습니다.
  • 따라서, 입력 데이터가 많은 문제에는, sys 라이브러리의 readline() 함수를 이용해 시간 초과를 피할 수 있습니다.
  • sys 라이브러리를 사용할 때는, 한 줄을 입력 받고 나서, 반드시 rstrip() 함수를 호출해야합니다.
    • sys.stdin.readline() 으로 입력을 받으면, 입력 후 엔터가 줄 바꿈 기호로 입력되는데,
    • 이 공백 문자를 제거하려면 rstrip() 함수를 사용해야합니다.

예제 코드

  • 한 개의 정수 입력 받기

      import sys
      a = int(sys.stdin.readline().rstrip())
  • 공백 기준으로 분리된 여러 정수 입력 받기

      import sys
      a, b, c  = map(int, sys.stdin.readline().rstrip().split())
  • 공백 기준으로 분리된 여러 정수를 입력 받아, 리스트에 저장하기

      import sys
      data  = list(map(int, sys.stdin.readline().rstrip().split()))
      # [1, 2, 3]
  • 공백 기준으로 분리된 여러 정수를 n번 입력 받아, 2차원 리스트에 저장하기

      import sys
      n = int(sys.stdin.readline().rstrip())
      data = [list(map(int, sys.stdin.readline().rstrip().split())) for _ in range(n)]
      # [[1, 2, 3], [4, 5, 6]]

추가

  • Jupyter 에서는 stdin 이 제대로 구성되어 있지 않기 때문에,
  • sys.stdin.readline() 을 실행하면 입력을 받지 못하고 항상 빈 문자열이 반환됩니다.
  • 따라서, Jupyter 에서는 sys.stdin.readline() 대신에 input() 을 사용해야 합니다.

참고

Comments