doflsdl1008   1년 전

예시에 대한 출력은 올바르게 나오는데 시간초과가 뜹니다. 어떻게 해결해야하나요?

chanmuzi   1년 전

조금 늦기도 했고 저도 잘 알지 못하지만 보이는 것 하나만 말씀드리겠습니다!


7번째 줄의 for 반복문은 cont번 수행되는데요, 이것은 문제에서 N으로 주어진 값과 같습니다.

문제에서 N의 범위는 N(1 ≤ N ≤ 500,000) 으로 아마 채점을 할 때는 굉장히 큰 N의 값이 입력될 것으로 생각되네요.

결국 입력을 무진장 많이 받아야 하는 상황에서는 input 함수를 사용하는 것보다 sys 모듈의 함수를 사용하는 것이 훨씬 속도가 빠른 것으로 알고 있습니다.


import sys 를 통해 sys 모듈을 불러오시고,

input( ) 대신 sys.stdin.readline( ) 함수를 사용하시면 시간 초과 문제를 해결할 수 있지 않을까 조심스레 의견 드려봅니다.


조금 덧붙이자면 numbers 라는 변수를 굳이 생성하지 않고

for i in range(1, cont + 1):
    lst.append(int(sys.stdin.readline()))

위와 같은 방식으로 입력 받는 값들을 바로 리스트에 추가할 수 있습니다.

물론 sys.stdin.readline() 자리에 input() 을 그대로 사용할 수도 있구요!

댓글을 작성하려면 로그인해야 합니다.