minzzl
꿀팁 / sys.stdin.readline() / 시간 초과를 대비하는 빠른 입력받기 본문
단순히 몇줄을 입력받는 경우에는 input() 을 사용하면 됩니다.
그러나 연속적으로 여러줄을 입력을 받아야하는 경우는 다릅니다. 시간 초과가 발생할 수 있기 때문입니다.
따라서 최대한 빠르게 입력을 받아야만 합니다.
그 때 사용하는 것이 sys 라이브러리에 정의되어있는 sys.stdin.readline() 입니다.
사실 기존에는 input() 만으로 문제를 푸는데 딱히 지장이 없었습니다만, 백준의 2751 문제를 접한 후 빠른 입력을 통해 시간 초과 문제를 해결해야만 했습니다..
sys.stdin.readline() 사용법
input()보다는 sys.stdin.readline()를 사용하면 더 빠른 입력이 가능합니다.
아래의 다양한 예제들로 익혀봅시다.
한 개의 정수를 입력 받는 경우
import sys
a = int(sys.stdin.readline())
정해진 개수의 정수를 한 줄에 입력 받는 경우
import sys
a, b, c = map( int, sys.stdin.readline().split() )
임의의 개수의 정수를 한 줄에 입력받아 리스트에 저장하는 경우
import sys
arr = list(map( int, sys.stdin.readline().split() ))
임의의 개수의 정수를 n줄 입력 받아 2차원 리스트에 저장하는 경우
import sys
n = int(sys.stdin.readline()) #입력 받을 데이터 개수
for i in range(n):
arr.append( list(map( int, sys.stdin.readline().split() )))
문자열 n줄을 입력받아 리스트에 저장할 때
import sys
n = int(sys.stdin.readline()) #입력 줄의 개수
arr = [sys.std.readline().strip() for i in range(n)]
lstrip(), strip(), rstrip() 사용법 및 차이점
공백 제거
아래의 코드는 strip()에 인자를 전달하지 않습니다. 인자를 전달하지 않으면 문자열에서 공백을 제거해줍니다.
rstrip() -> 오른쪽 공백 제거
lstrip() -> 왼쪽 공백 제거
strip() -> 오른쪽, 왼쪽 공백 제거
[입력]
text = ' Water boils at 100 degrees '
print('[' + text.rstrip() + ']')
print('[' + text.lstrip() + ']')
print('[' + text.strip() + ']')
[출력]
[ Water boils at 100 degrees]
[Water boils at 100 degrees ]
[Water boils at 100 degrees]
동일한 문자 제거
인자로 문자 1개를 전달하면 그 문자와 동일한 것을 모두 제거합니다.
동일하지 않은 문자가 나올 때까지 제거합니다.
[입력]
text = '0000000Water boils at 100 degrees 000'
print(text.lstrip('0'))
print(text.rstrip('0'))
print(text.strip('0'))
[출력]
Water boils at 100 degrees 000
0000000Water boils at 100 degrees
Water boils at 100 degrees
여러 문자 제거
인자로 여러 문자를 전달하면 그 문자들과 동일한 것들을 모두 제거합니다.
동일하지 않은 문자가 나올 때 까지 제거합니다.
[입력]
text = ",,,,,123.....water....pp"
print(text.lstrip(',123.p'))
print(text.rstrip(',123.p'))
print(text.strip(',123.p'))
[출력]
water....pp
,,,,,123.....water
water
* 다음의 글을 참고하여 작성하였습니다.
'Algorithm > 기타 공부' 카테고리의 다른 글
Red Balck Tree (0) | 2023.02.27 |
---|---|
꿀팁 / Python 빠른 입출력 (0) | 2022.12.02 |
정렬 / 버블 정렬 / 옆에 있는 값과 비교하여 더 작은 값을 반복적으로 앞으로 보내는 정렬 (1) | 2022.10.05 |
정렬 / 선택 정렬 / 가장 작은 것을 선택해서 제일 앞으로 보내는 알고리즘 (0) | 2022.10.04 |