반응형

이전 글에서 힙소트를 구현해서 2751번을 풀었습니다.

 

그런데 다른 좋은 풀이들을 찾다보니 힙소트를 구현한 것에 비해 시간이 거의 6~7배 빠르고, 코드 길이도 10배 이상 짧은 코드가 있었습니다.

 

아래는 힙소트, 위에는 줄인 코드

 

먼저 정답 코드부터 공유합니다.

 

import sys
n = int(input())
l = []
for i in range(n):
    l.append(int(sys.stdin.readline()))
for i in sorted(l):
    sys.stdout.write(str(i)+'\n')

 첫 번째 줄 ~ 세 번째 줄까지의 설명 : 먼저 하나하나 설명 드리자면 sys를 import하고, n을 입력받은 뒤 숫자들을 저장할 리스트 l을 선언해줍니다.

 

*첫 번째 for문 설명

 먼저 선언했던 l에 사용자로부터 입력 값을 받은 뒤 append로 리스트 뒤로 넣어줍니다. 그런데 이 때 int(input()으로 넣어주는 것이 아닌 readline()으로 넣어주는데 여러 값들을 입력 받을 때는 이렇게 입력받는 것이 더 빠르다고 하네요. 

 

*두 번째 for문 설명

 l을 정렬시켜서, 즉 sorted(l)의 내부를 반복합니다. sorted는 O(nlogn)의 시간 복잡도를 갖기 때문에 2751번에서 요구하는 범위에서 시간 내에 들어올 수 있습니다. sys를 이용해서 출력하며 출력할 때는 write를 사용합니다. 또한 줄을 바꿀 때는 '\n'을 사용하는 것이 가장 시간이 적게 걸리기 때문에 다른 것보다도 '\n'을 사용하는 것을 추천드립니다.

 

*sys.stdin.readline.rstrip을 사용한다면 끝의 개행문자를 제거할 수 있다.

반응형

+ Recent posts