공부 기록장

input() vs sys.stdin.readline() 본문

코딩 테스트/정리 및 복습

input() vs sys.stdin.readline()

빛나무 2024. 3. 20. 14:46

input()과 sys.stdin.readline()의 차이점

 

1. input()

  • 입력 받은 값의 개행 문자를 rstrip() 함수를 적용해 삭제하고 리턴함
  • parameter로 promt message 입력 가능

 

2. sys.stdin.readline()

  • 개행 문자를 포함한 값을 리턴

결론적으로 말하자면,

input 함수는 메세지도 출력하고, 개행 문자를 삭제하고 리턴하기 때문에

sys.stdin.readline에 비해 속도가 느리다

 

따라서, 코딩 테스트에서 python으로 문제를 풀 때에는

input() 보다는 sys.stdin.readline()을 활용해 입력을 받는 것이 좋다.

 

구체적으로 말하자면,

1-2줄 입력일 때에는 크게 차이가 없을 수 있지만

반복문을 통해 여러 줄을 입력 받는 경우에는 input()으로 입력을 받으면 시간 초과가 발생할 수 있으니

sys.stdin.readline()을 사용해야 한다!

 

import sys

T = int(input())
for i in range(T):
    a, b = map(int, sys.stdin.readline().split())
    print(a+b)

 

위의 코드를 예시로 봐보면,

테스트 케이스 개수인 T를 입력 받을 때에는 input을 사용해도 무방하다.

하지만 반복문으로 여러 줄을 입력 받을 때는 sys.stdin.readline을 사용했다.

 

 

sys.stdin.readline() 사용법

 

1. 한 개의 정수 입력 받을 때

import sys
a = int(sys.stdin.readline())

 

sys.stdin.readline() 은 한 줄 단위로 입력을 받는다.

따라서 문자열 뒤의 개행 문자를 제거하고, 정수로 사용하기 위해

int() 함수를 사용하여 형 변환을 해줘야 한다.

 

 

2. 정해진 개수의 정수를 한 줄에 입력 받을 때

import sys
a, b, c = map(int, sys.stdin.readline().split())

 

공백을 기준으로 문자열을 자르고

map 함수를 이용해 각각의 요소들을 int형으로 형 변환 해준다.

 

 

3. 임의의 개수의 정수 한 줄에 입력 받아 리스트에 저장할 때

import sys
data = list(map(int, sys.stdin.readline().split()))

 

공백을 기준으로 문자열을 나누어 준 다음,

list() 함수를 이용해 map 객체를 리스트 형으로 변환해 준다.

 

 

4. 임의의 개수의 정수를 n줄 입력받아 2차언 리스트에 저장할 때

import sys
data = []
n = int(sys.stdin.readline())
for i in range(n):
    data.append(list(map(int, sys.stdin.readline().split())))

 

각 줄의 정수들을 리스트 형태로 만든 후에

리스트들을 요소로 저장할 리스트 변수data에 저장해 준다.

 

 

5. 문자열 n줄을 입력받아 리스트에 저장할 때

import sys
n = int(input())
data = [sys.stdin.readline().strip() for i in range(n)]

 

strip() 함수는 문자열의 맨 앞과 맨 끝의 공백 문자를 제거해준다.

 

 

참고 자료

https://buyandpray.tistory.com/7

https://velog.io/@yeseolee/Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%85%EB%A0%A5-%EC%A0%95%EB%A6%ACsys.stdin.readline

 

 

'코딩 테스트 > 정리 및 복습' 카테고리의 다른 글

딕셔너리 자료형  (1) 2024.03.22
전역 변수와 지역 변수  (1) 2024.03.22
임의의 최대값 최소값  (0) 2024.03.22
완전 탐색과 백트래킹  (0) 2024.03.21
코딩 테스트 문제 유형 파악하기  (1) 2024.03.20