1. input( )대신 sys.stdin.readline( )을 사용하는 이유
- 한 두줄 입력외에 반복문으로 여러줄을 입력 받아야 할 때 input()으로 입력 받는다면 시간초과가 발생
- sys.stdin.readline( )을 활용하여 시간초과를 해결할 수 있습니다. (혹은 PyPy3로 제출 시 해결할 수 있습니다.)
- sys.stdin.readline( )의 경우 개행 문자('\n')가 입력 되기에 .strip( ) 등 을 활용해 줄 경우 해결할 수 있습니다.
( rstrip( ) : 오른쪽 공백을 삭제, lstrip( ): 왼쪽 공백을 삭제, strip( ) : 왼쪽, 오른쪽 공백을 삭제 )
- stdin은 우리가 흔히 키보드로 입력하는 행위 뿐만 아니라 파일 등의 넓은 범위의 입력을 의미합니다.
즉, stdin에 input( ) 호출을 포함하고 있습니다.
※ stdin.readline( )과 input( )함수간의 속도차이
1) 두 함수간의 속도차이는 Prompt (사용자의 명령을 받아들일 준비가 되었음을 모니터에 나타내는 표시) 출력여부
2) 한번에 읽어와 버퍼에 저장하는 stdin.readline()가 하나씩 누를 때마다 데이터를 버퍼에 보관하는 input() 보다 처리 속도가 빠릅니다. 즉, 버퍼 사이즈 차이로 입력이 반복될 수록 stdin.readline()이 우위를 가집니다.


1-1 ) 3개의 정수를 한줄에 입력받을 때
import sys
a,b,c = map(int,sys.stdin.readline().split())
1-2 ) 특정 개수의 정수를 한줄에 입력받아 리스트에 저장
import sys
data = list(map(int,sys.stdin.readline().split()))
1-3 )특정 개수의 정수를 n줄 입력받아 2차원 리스트에 저장
- sys.stdin.readline( )으로 받은 문자열을 공백으로 나눈 후 int형으로 전환, list에 담아서 data 리스트의 원소로 추가
- 사용자가 원하는 길이만큼의 리스트를 생성하여 원소로 추가할 수 있습니다.
import sys
data = []
n = int(sys.stdin.readline())
for i in range(n):
data.append(list(map(int,sys.stdin.readline().split())))

1-4 ) 문자열 n줄을 입력받아 리스트에 저장할 때
import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)]

2. print( ) 대신 sys.stdout.write( )을 사용하는 이유
- print( )의 경우 자동으로 개행이 수행되지만 sys.stdout.write( )을 활용할 경우 개행이 발생하지 않습니다.
- sys.stdout.write( )의 경우 괄호 내부에서 + '\n'을 활용하여 개행문자를 추가해줄 수 있습니다.
'프로그래밍 > Python' 카테고리의 다른 글
| 파이썬 속성문법_자료형(리스트_2) + 리스트 메서드 (0) | 2020.11.16 |
|---|---|
| 파이썬 속성문법_자료형(리스트_1) (0) | 2020.11.12 |
| 파이썬 속성문법_자료형(정수, 실수편) (0) | 2020.11.10 |