wnsrl4067   2년 전

첫번째 코드는 시간이 320ms, 두번째 코드는 4300ms가 발생합니다.

입력 받는 부분인 

lst.append(list(input().split()))
lst[i][0] = int(lst[i][0])

map(str,input().split())

int(age)

이 두 과정에서 큰 차이가 나는거 같은데, 왜 큰 차이가 발생하는지 궁금합니다!


관련 글이나, 학습자료가 있다면 알려주시면 감사히 읽겠습니다 :)

wizardrabbit   2년 전

안녕하세요?

두 코드의 차이점은, 첫 번째의 코드의 경우 sys 모듈의 sys.stdin.readline을 통해 입력을 받았고, 두 번째 코드의 경우 그냥 input()을 통해 입력을 받았기 때문입니다.

파이썬의 sys.stdin.readline()은 그냥 input()에 비해 월등히 빠르기 때문에 많은 데이터를 입력받아야 하는 상황에서 실행 시간이 훨씬 빠르며 문제풀이에도 유리합니다. 그러므로 본 문제처럼 입력받는 데이터가 많다면 sys.stdin.readline 사용을 적극 권장합니다.

기본적인 사용법은 코드에 첨부했습니다.

그리고 입력을 많이 받는 문제가 있다면 출력을 많이 해야 하는 문제도 있을 것입니다. 이 경우에는 sys.stdout.write()을 사용하면 sys.stdin.readline()과 마찬가지로 시간을 대폭 줄일 수 있게 됩니다. sys.stdin.readline과 sys.stdout.write에 대한 내용을 검색하시는 것을 추천합니다!

wnsrl4067   2년 전

앗, 단순히 빠른 입/출력 차이였군요.. 감사합니다! 항상 배워갑니다 :)

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