[파이썬] sys.stdin.readline() 사용하기

    백준 문제에서는 반복문으로 여러줄을 입력 받아야 할 때가 많다.

    반복문으로 여러줄을 입력 받을 때 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() 함수는 문자열 맨 앞과 맨 끝의 공백문자를 제거하는 함수이다.

    댓글