sys
모듈을 사용한 입출력 방법sys
모듈은 Python 인터프리터와 직접 상호작용하는 시스템 특정 파라미터와 함수를 제공한다. 특히 입출력 작업에서 유용하며, 표준 input()
/print()
함수보다 더 많은 제어와 성능을 제공한다.
sys.stdin.readline()
import sys
# 기본 형태
line = sys.stdin.readline()
sys.stdin.readline()
은 input()
함수보다 성능이 더 좋습니다. 특히 대량의 데이터를 처리할 때 유용하다. 주의할 점은 개행 문자(\n
)를 포함하여 반환한다는 것이다.
# 개행 문자 제거하기
line = sys.stdin.readline().strip() # 양쪽 공백과 개행 문자 제거
# 또는
line = sys.stdin.readline().rstrip() # 오른쪽 공백과 개행 문자만 제거
# 문자열로 처리
a, b = sys.stdin.readline().split()
# 정수로 변환
a, b = map(int, sys.stdin.readline().split())
# 실수로 변환
a, b = map(float, sys.stdin.readline().split())
# 특정 구분자로 나누기
a, b = sys.stdin.readline().split(':') # 콜론으로 구분
# n줄 입력 받기
n = int(sys.stdin.readline())
lines = [sys.stdin.readline().strip() for _ in range(n)]
# for문 사용해서 받기
lines = []
for _ in range(n):
lines.append(sys.stdin.readline().strip())
# 파일이나 표준 입력의 모든 줄 읽기
lines = []
for line in sys.stdin:
if line.strip() == "": # 빈 줄이면 종료 (선택 사항)
break
lines.append(line.strip())
# 공백으로 구분된 정수를 리스트로
nums = list(map(int, sys.stdin.readline().split()))
# 한 줄에 하나씩 있는 정수들을 리스트로
n = int(sys.stdin.readline())
nums = [int(sys.stdin.readline()) for _ in range(n)]
# 2차원 배열(리스트의 리스트) 입력 받기
n, m = map(int, sys.stdin.readline().split()) # 행과 열
matrix = []
for _ in range(n):
row = list(map(int, sys.stdin.readline().split()))
matrix.append(row)
# 또는 더 간결하게
matrix = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]
# 파일에서 입력 리다이렉션
sys.stdin = open('input.txt', 'r')
# sys.stdin.readline()은 파일에서 읽기
line = sys.stdin.readline()
# 파일 닫기 및 원래 표준 입력으로 복원
sys.stdin.close()
sys.stdin = sys.__stdin__
sys.stdout.write()
# 기본 형태
sys.stdout.write("Hello, World!\n") # 개행 문자를 명시적으로 추가해야 함
# 숫자 출력 시 문자열로 변환 필요
sys.stdout.write(str(123) + "\n")
sys.stdout.write()
는 print()
함수보다 약간 더 빠르지만, 문자열만 받을 수 있고 개행 문자를 자동으로 추가하지 않는다.
sys.exit()
# 성공적인 종료
sys.exit(0)
# 오류 코드와 함께 종료
sys.exit(1) # 1 또는 다른 숫자는 오류를 나타냄
# 메시지와 함께 종료 (stderr에 출력됨)
sys.exit("오류 발생: 파일을 찾을 수 없습니다")
import sys
input = sys.stdin.readline # 더 빠른 입력을 위한 별칭 설정
n = int(input())
array = list(map(int, input().split()))
result = sum(array)
print(result)
여기에서 input = sys.stdin.readline에 '()'를 왜 안붙이냐면, input = sys.stdin.readline은 readline 함수 자체를 input 변수에 할당한다. 이렇게 하면 input()을 호출할 때마다 sys.stdin.readline()이 실행이 된다. input = sys.stdin.readline()은 readline 함수를 한 번 호출하고 그 결과(첫 번째 입력 줄의 문자열)를 input 변수에 할당한다. 이 경우 input은 함수가 아닌 문자열이 되어 더 이상 함수로 호출할 수 없게 되기에 괄호가 없는게 맞다.