일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- [초급(예비) 개발자 오픈소스 실무 역량강화 교육]
- ds_store
- slicing [::-1]
- PIP
- 코딩 테스트
- Python
- blinker
- 쿼리
- 함수형 프로그래밍
- sort v.s. sorted
- 생각
- 고차함수
- reverse v.s. reversed
- boto3
- sort(reverse=True) v.s. reverse
- Airflow
- timestamp
- CI/CD
- r-string
- pandas
- os.path
- decorator
- OS
- functools.wraps
- 순수함수
- S3
- selenium-wire
- Today
- Total
공부일지
[코딩 테스트] 코드업 예제로 알아보는 Python 입력모듈과 경과시간 본문
파이썬으로 코딩테스트를 준비할 때 입력은
별도로 import 필요 없는 내장함수 input()이나
import sys를 통해 stdin.readline()을 이용할 수 있다.
눈으로 보기에는 input() 보다 stdin.readline() 더 길고 import 도 하기 때문에 입력시간이 더 길 것 같다.
과연 그럴지 한번 확인해보자.
'''
https://codeup.kr/problem.php?id=1409
1409 : 기억력 테스트 1
input
10 9 8 7 6 5 4 3 2 1
3
'''
import sys
import time
start1 = time.time()
arr = list(map(int, input().split()))
k = int(input())
print(arr[k-1])
end1 = time.time()
start2= time.time()
arr = list(map(int, sys.stdin.readline().split()))
k = int(sys.stdin.readline())
print(arr[k-1])
end2 = time.time()
notice = f'''
time1: {end1- start1}
time2: {end2 - start2}
'''
print(notice)
time1은 input() 쓴 경우와 time2는 sys.stdin.readline() 쓴 경우이다.
경과 시간을 확인하면 다음과 같다.
결론
input()보다 sys.stdin.readline()이 코드 실행시간이 더 빠르다.
그런데 시간 빠른 것보다 간단하게 쓰는 게 더 중요하다고 생각하면 input()을 써도 무방하다.
자기가 원하는 도구를 고르는 것일 뿐.
반전
코드업에서 실행시간을 확인해보면 예상과 반대이다.
왜 그런지 확인해보니 다음과 같다. 참고!
요약
일반적으로 sys.stdin.readline()이 input()보다 실행속도가 빠르지만 실행환경에 따라 입력값을 처리해놓은 상황이 다르기 때문에 다소 다를 수 있음.
GPT 설명
코딩 테스트 플랫폼과 IDE에서 실행할 때 input()과 sys.stdin.readline()의 성능 비교 결과가 반대로 나오는 이유는 실행 환경의 차이 때문일 가능성이 큽니다. 이를 자세히 분석해볼게요.
1. 일반적인 속도 차이
- input()은 내부적으로 여러 가지 처리를 거쳐 입력을 받기 때문에 느립니다.
- sys.stdin.readline()은 버퍼를 사용하여 한 번에 데이터를 읽어오기 때문에 더 빠릅니다.
IDE에서 실행했을 때:
- sys.stdin.readline()이 더 빠르게 측정됨 → 일반적으로 예상되는 결과.
코딩 테스트 플랫폼에서 실행했을 때:
- input()이 더 빠르게 측정됨 → 예상과 다른 결과.
2. 실행 환경 차이의 영향
(1) 코딩 테스트 플랫폼은 입력이 미리 주어져 있을 가능성이 있음
- 대부분의 코딩 테스트 플랫폼에서는 미리 준비된 입력을 빠르게 처리할 수 있도록 최적화되어 있을 수 있음.
- 이 경우 input()이 내부적으로 최적화되어 실행될 수도 있음.
(2) 입력 버퍼 크기의 차이
- sys.stdin.readline()은 내부적으로 버퍼를 사용하지만, 실행 환경마다 버퍼 크기가 다를 수 있음.
- 특정 환경에서는 sys.stdin.readline()이 예상보다 느릴 수도 있음.
(3) 입출력 리디렉션 여부
- 코딩 테스트 플랫폼에서는 표준 입력이 파일로 리디렉션되어 있을 가능성이 있음.
- sys.stdin.readline()이 파일에서 읽어올 때 오버헤드가 발생할 수 있음.
(4) 파이썬 구현 차이 (CPython, PyPy 등)
- 플랫폼에서 어떤 파이썬 구현을 사용하는지에 따라 input()과 sys.stdin.readline()의 내부 동작이 다를 수 있음.
3. 결론
- 보통 sys.stdin.readline()이 더 빠른 것이 일반적이지만, 코딩 테스트 플랫폼에서는 환경에 따라 input()이 더 빠르게 동작할 수도 있음.
- 실행 환경이 서로 다르므로 단순 비교는 어렵고, 플랫폼에서 어떻게 동작하는지 실험해보는 것이 중요함.
'Computer > Coding Tests' 카테고리의 다른 글
[코딩 테스트]BFS로 보는 [Bool] v.s. [Node], visited 배열 쓸 때와 result 배열만 쓸 때의 차이(서로 관련 있음) (0) | 2025.03.26 |
---|---|
[코딩 테스트]시간 재는 모듈 time v.s. timeit 차이 (0) | 2025.03.21 |
[코딩 테스트]정렬 문제로 알아보는 Python 자료구조 비교(tuple, namedtuple, struct, class +__slots__) (0) | 2025.03.21 |
[코딩 테스트] 코드업 예제로 알아보는 Python 내장함수 reverse(), reversed()와 경과시간 (0) | 2025.03.11 |
[코딩 테스트] 코드업 예제로 알아보는 Python 내장모듈 Counter와 경과시간 (0) | 2025.03.11 |