Computer/Coding Tests

[코딩 테스트] 코드업 예제로 알아보는 Python 입력모듈과 경과시간

이르리의 공부일지 2025. 3. 10. 18:18

파이썬으로 코딩테스트를 준비할 때 입력은

별도로 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, readline 함수를 통해 비교한 실제 코드 경과시간

 

 

 


결론

input()보다 sys.stdin.readline()이 코드 실행시간이 더 빠르다.

그런데 시간 빠른 것보다 간단하게 쓰는 게 더 중요하다고 생각하면 input()을 써도 무방하다.

자기가 원하는 도구를 고르는 것일 뿐.

 

 

 


반전

코드업 결과(위-input, 아래-sys.stdin.readline)

코드업에서 실행시간을 확인해보면 예상과 반대이다.

왜 그런지 확인해보니 다음과 같다. 참고!

 

요약

일반적으로 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()이 더 빠르게 동작할 수도 있음.
  • 실행 환경이 서로 다르므로 단순 비교는 어렵고, 플랫폼에서 어떻게 동작하는지 실험해보는 것이 중요함.