공부 기록장
input() vs sys.stdin.readline() 본문
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
'코딩 테스트 > 정리 및 복습' 카테고리의 다른 글
딕셔너리 자료형 (1) | 2024.03.22 |
---|---|
전역 변수와 지역 변수 (1) | 2024.03.22 |
임의의 최대값 최소값 (0) | 2024.03.22 |
완전 탐색과 백트래킹 (0) | 2024.03.21 |
코딩 테스트 문제 유형 파악하기 (1) | 2024.03.20 |