-
백준 2010번 (for문 _사용 및 sys입력)Python with 백준 2023. 1. 1. 21:51
매우 쉬운 문제. 입력 받아서 더해서 N-1을 빼주면 되는 문제다.
하지만 입력을 최대 500000번을 받아야 하기 때문에 input함수로는 시간초과가 되었다.
import sys
N=int(input())
sum=0
for _ in range(N): # _을 사용하면 반복문변수를 직접 사용하지 않는 반복문에서 유용하다.
x=int(sys.stdin.readline())
sum+=x
print(sum+1-N)sys모듈에는 인터프리터가 유지관리하는 변수와 함수들이 있다. 인터프리터란 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 간단하게 input()을 sys.stdin.readline()으로 대체해주면 된다. 여기서 드는 의문은 sys로 입력받는게 input보다 빠르다면 input을 굳이 쓰는 이유가 뭘까 하는 것이다. 그래서 input과 sys입력의 차이를 알아보았다.
input이 느린이유
1. 프롬프트 메시지 사용가능
input은 (입력받을 수는?) 같이 입력을 할 때 도움을 주는 프롬프트 메시지를 띄울 수 있는데 프롬프트 메시지를 넣지 않아도 약간의 부하를 주게 된다는게 아쉽다.
2. 줄바꿈 문자 삭제 후 리턴
줄바꿈 문자를 삭제 후에 리턴하기 때문에 시간이 조금 더 걸린다.
sys에서 줄바꿈 문자를 삭제 후 리턴하려면 뒤에 .strip()을 붙여주면 된다.
즉 input은 sys에 비해 느리지만 프롬프트 메시지를 띄울 수 있다는 장점이 있다.
'Python with 백준' 카테고리의 다른 글
백준 10797번 (리스트에 어떤 요소 개수 찾기) (0) 2023.01.04 백준 2576번 (리스트 최솟값 구하기) (0) 2023.01.02 백준 2440번 (반복문 거꾸로, 출력반복) (0) 2022.12.31 백준 1408번 (문자열 연결, 숫자 출력 앞에 0 붙이기) (0) 2022.12.28 백준 9506번 (리스트) (0) 2022.12.26