백준 문제에서는 반복문으로 여러줄을 입력 받아야 할 때가 많다.
반복문으로 여러줄을 입력 받을 때 input()으로 입력 받게 되면 시간 초과가 발생할 수 있다.
sys.stdin.readline() 사용법
->한개의 정수를 입력받는 상황
import sys
a = int(sys.stdin.readline())
sys.stdin.readline()은 기본적으로 한줄 단위로 입력을 받기 때문에 개행문자가 같이 입력된다.
1을 입력후 엔터를 누르게 되면 1\n이 저장되므로 개행문자를 제거해주고 정수로 사용하기 위해 int()로 형변환을 해준다.
-> 정해진 개수의 정수를 한줄에 입력받는 상황
import sys
a,b,c = map(int,sys.stdin.readline().split())
map()은 첫 번째 매개변수로 함수가 오고, 두 번째 매개변수로 반복 가능한 자료형(리스트,튜플 등)이 오게 된다.
map() 함수를 이용하여 여러개의 입력이 있을 경우 각각의 요소들에 대해 특정한 함수를 적용시킬 수 있다.
위의 예시에서는 int()함수를 각각의 입력에 적용시켜주는 것!
split() 함수는 말 그대로 문자열을 나누어 주는 함수이다. 괄호안에 특정 값을 넣으면 ex)split(' ') 그 값을 기준으로 문자열을 나누고, 아무 값도 넣지 않는다면 스페이스, 탭, 엔터등의 공백을 기준으로 나눈다.
->임의의 개수의 정수를 한줄에 입력받는 상황
import sys
data = list(map(int,sys.stdin.readline().split()))
임의의 개수의 정수를 한줄에 입력받을 때는 list()함수를 이용하여 입력받은 값을 list에 저장해놓으면 편하다
list()는 자료형을 리스트형으로 변환해주는 함수로 위의 상황에서는 입력받은 값을 list값으로 data에 저장해놓은 상황이다.
->문자열 n줄을 입력받아 리스트에 저장할 때
import sys
n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)]
문자열 n줄을 입력받아 리스트에 저장할 때는 for문과 strip()을 사용하여 입력받을 수 있다.
strip() 함수는 문자열 맨 앞과 맨 끝의 공백문자를 제거하는 함수이다.
'파이썬 > 파이썬의 기본' 카테고리의 다른 글
[파이썬] 2차원 리스트 만들기 (0) | 2022.11.28 |
---|---|
[파이썬] 여러가지 list 만들기 (0) | 2022.11.28 |
[파이썬] input()과 sys.stdin.readline()의 차이점 (0) | 2022.11.27 |
[파이썬] 파이썬 코드 주석 (0) | 2022.11.25 |
[파이썬]숫자형 자료형 (0) | 2022.10.11 |
댓글