문제
답
import sys
T = int(sys.stdin.readline().rstrip())
for _ in range(T):
A, B = map(int, sys.stdin.readline().rstrip().split())
sys.stdout.write(f"{A + B}\n")
🧠 전체 흐름
1. 입력 개수 T를 sys.stdin.readline()으로 받음.
2. for 반복문을 T번 실행.
3. 각 줄을 sys.stdin.readline()으로 읽고 split()으로 나눔.
4. map(int, ...)로 두 숫자를 정수로 변환.
5. 두 숫자를 더한 후 sys.stdout.write()로 출력.
📚 코드 설명
sys.stdin.readline()
- 설명: input()보다 훨씬 빠른 속도로 입력을 처리하고 읽어온 문자열 끝에 개행 문자(\n) 가 포함되면 rstrip()을 사용해 제거해야 한다.
- 예제:
import sys
line = sys.stdin.readline().rstrip()
print(line)
sys.stdout.write()
- 설명: print()보다 더 빠르게 문자열을 출력하고자동으로 줄바꿈(\n)을 추가하지 않으므로 명시적으로 포함해야 함
- 예제:
import sys
sys.stdout.write("Hello, World!\n") # 출력: Hello, World!
크리스마스를 맞이해서 딱 한문제만 풀려고 백준에 들어갔는데 이상한 문제를 풀 순서였다.
문제에서 sys.stdin.readline()이란 것을 써서 풀라는데 무지렁이 나는 처음봤다.
그래서 어쩔 수 없이 찾아보고 문제를 풀 수 밖에 없었다!
아무튼 sys.stdin.readline() sys.stdout.write() 요런 입출력 함수를 알게 되었다.
그러다가 의문이 들어서 지피티 선생님한테 물어봤다.
🤔근데 인풋과 프린트보다 빠른데 왜 저걸 기본적으로 안쓰고 인풋와 프린트를 써?
지피티 선생의 답은~~
📌 1️⃣ input()과 print()는 더 직관적이다
- 사용하기 쉽고 직관적입니다.
- input()은 문자열로 입력을 받으며, 바로 변수에 저장할 수 있습니다.
- print()는 알아서 줄바꿈(\n)을 추가해 주기 때문에 편리합니다.
📌 2️⃣ 일반적인 프로그램에서는 성능 차이가 미미하다
- 대부분의 일반적인 프로그램에서는 input()과 print()의 성능 차이가 크지 않습니다.
- 입력과 출력의 양이 많지 않기 때문에 최적화를 고려할 필요가 없습니다.
🚀 성능 최적화는 언제 필요할까?
- 알고리즘 문제 풀이: 수백만 줄의 입력과 출력을 처리해야 할 때
- 대규모 데이터 처리: 매우 큰 파일이나 실시간 데이터를 다룰 때
📌 3️⃣ 가독성이 더 중요하다
- input()과 print()는 코드의 가독성을 높여줍니다.
- 팀 프로젝트나 협업에서는 읽기 쉬운 코드가 중요합니다.
- 초보자도 input()과 print()를 쉽게 이해할 수 있습니다.
📌 4️⃣ 줄바꿈(\n) 처리가 번거롭다
- sys.stdin.readline()은 끝에 **개행 문자(\n)**가 남아 있어서 .rstrip()으로 제거해야 합니다.
- sys.stdout.write()는 자동으로 줄바꿈을 추가하지 않습니다.
📌 5️⃣ 초보자 입장에서 접근성이 낮다
- sys.stdin.readline()과 sys.stdout.write()는 사용하기 까다롭습니다.
- 특히 프로그래밍 입문자에게는 추가 개념(rstrip, map)이 복잡하게 느껴질 수 있습니다.
🎯 결론
- 일반적인 상황: input()과 print() 사용
- 성능이 중요한 경우 (대량 데이터 처리): sys.stdin.readline()과 sys.stdout.write() 사용
✅ 정리하면:
- input()과 print()는 간단하고 가독성이 좋다.
- sys.stdin.readline()과 sys.stdout.write()는 속도가 빠르지만 코드가 복잡하다.
- 일반적인 프로그램에서는 속도보다는 가독성이 더 중요하다.
따라서, 알고리즘 문제 풀이처럼 입력과 출력이 매우 많고 시간 제한이 있는 경우에만 sys.stdin.readline()과 sys.stdout.write()를 사용한다고 한다.
'Today I learned' 카테고리의 다른 글
WIL 과제,,, 해치웠나? (0) | 2024.12.27 |
---|---|
2024.12.26 스트림릿으로 타로봇 만들기 (4) | 2024.12.26 |
2024.12.24 누가 내 과제 좀 해줘요 (2) | 2024.12.24 |
2024.12.23 파이썬에서 점과 콤마 (2) | 2024.12.23 |
2024.12.20 해시테이블 (4) | 2024.12.20 |