1. sys.stdin 이란?
- 표준 입력을 빠르게 받기 위한 입력 스트림 객체
- input() 보다 속도가 빠르다
- 주로 여러 줄 입력, 대량 데이터 처리 시 사용됨
- import sys 로 사용
import sys
2. sys.stdin.readline()
- 한 줄 입력받기
- 줄 끝에 `\n` 포함해서 가져온다. 그래서 따로 `.strip()` 또는 `.rstrip()`으로 `\n` 벗겨내야 함.
import sys
line = sys.stdin.readline().strip()
- 예제 : 정수 두 개 입력받기
a, b = map(int, sys.stdin.readline().strip().split())
# 공백을 기준으로 나누기
# 나눈 것을 정수형으로 a,b에 각각 mapping
3. sys.stdin.readlines()
- 여러 줄을 한꺼번에 리스트로 입력받음
- 한 줄씩 list 요소로 들어옴
- ['1 2\n', '3 4\n', ...]
import sys
lines = sys.stdin.readlines()
- 예제 : 리스트에서 숫자 추출
nums = [list(map(int, line.strip().split())) for line in sys.stdin.readlines()]
# 여러줄을 한 꺼번에 리스트로 입력받음
# 각 리스트 요소로 line으로 받아옴
# 뒤에 줄바꿈 \n을 벗겨내고 공백을 기준으로 나누기
# 정수형으로 바꿔서 각각 리스트로 저장
# num = [ ] 가 됨.
4. for line in sys.stdin:
- `sys.stdin` 자체가 반복 가능한 객체이다.
- `for line in sys.stdin: ` 형태로 반복문에서 사용이 가능하다.
- 예제 : 입력이 끝날 때까지 한 줄씩 처리
import sys
for line in sys.stdin:
if line.strip() == '': # 빈 줄이면 종료
break
print("입력:", line.strip())
- sys.stdin은 파일처럼 반복 가능한 객체입니다.
- 그래서 for line in sys.stdin: 구문으로 한 줄씩 읽을 수 있어요.
- 각 줄을 line에 저장하고,
- 빈 줄이면 반복을 종료 (break)
- 빈 줄이 아니면 strip()으로 양쪽 공백 제거 후 출력
sys.stdin vs sys.stdin.readline() 비교
| 항목 | sys.stdin (for line in) | sys.stdin.readline() |
| 용도 | 한 줄씩 반복하면서 읽기 | 한 줄씩 직접 읽기 |
| 반복 | for 루프에서 사용 | 직접 호출해야 함 |
| 종료 조건 | 입력이 끝날 때까지 (EOF) | 수동으로 반복 조건 설정 |
| 속도 | 빠름 | 빠름 |
| 예 | for line in sys.stdin: | line = sys.stdin.readline() |
실제로는 언제 어떻게 쓰면 좋을까?
상황추천 방식
| 코딩테스트에서 빠르게 여러 줄 읽기 | ✅ for line in sys.stdin |
| 한 줄씩 처리하면서 조건문 적용 | ✅ sys.stdin.readline() |
| 파일처럼 전체 줄 리스트로 받고 싶을 때 | ✅ sys.stdin.readlines() |
- 보너스: input() vs sys.stdin
| 구분 | input() | sys.stdin |
| 속도 | 느림 (I/O 오버헤드) | 빠름 |
| 쓰임 | 소규모 테스트 | 대규모 입력 |
| 자동 줄바꿈 제거 | O | X (strip() 필요) |
| 여러 줄 입력 | X | O (readlines() 등 사용) |
- 🛠️ 자주 틀리는 실수들
- sys.stdin.readline()은 무조건 문자열 반환 → int() 필요
- readlines()는 한 번만 읽기 가능 (재사용 불가)
- 입력 끝이 정해지지 않았을 때 EOF 처리 주의
- 📝 마무리 요약
- sys.stdin.readline() → 한 줄 빠르게 입력받기
- sys.stdin.readlines() → 여러 줄 리스트로 받기
- for line in sys.stdin: → 끝날 때까지 반복
- 무조건 .strip() 붙이자!
- 코테에서는 input()보다 빠른 sys.stdin이 유리하다
반응형
'프로그래밍 언어 기초 > Python' 카테고리의 다른 글
| [Python] 문법 되새김 문제 (1) | 2026.01.30 |
|---|---|
| python map() 함수 (1) | 2025.07.11 |
| python 공백 제거 함수 : strip(), lstrip(), rstrip() (1) | 2025.07.07 |
