수 정렬하기 2 - 2751

Update:     Updated:

Category:

Tags:


2751번: 수 정렬하기 2

수 정렬하기 1 문제와 완전 동일하게 주어진 문자열을 오름차순으로 정렬하는 문제이지만, 그냥 sort() 함수를 쓰는 경우 시간 초과가 난다.

입력 값 : $N(1 ≤ N ≤ 1,000,000)$

메모리 제한 : $256 MB$


맞았습니다! 풀이

입력을 받는 방식을 바꾸니까 맞았다고 뜬다.

import sys

N = int(sys.stdin.readline())
num = [int(sys.stdin.readline()) for _ in range(N)]

num.sort()
for n in num:
  print(n)



sys.stdin.readline()

  • 문자열을 화면에 출력하는 기능이 없다.
  • 한 번에 읽어와서 버퍼에 저장한다. (-> 훨씬 빠름!)

input()

  • 파라미터로 문자열을 받을 수 있어서, 해당 문자열을 화면에 출력하고 입력을 받는다.
  • 사용자가 키를 누를 때마다 하나씩 버퍼에 들어간다.
  • 모든 입력을 문자열로 변환해서 가져온다.
  • 개행 문자(줄바꿈)를 제거한 뒤에 값을 반환한다.

    문자열 변환, 개행 문자 제거 등 추가적인 작업들을 수행하기 때문에, readline보다 속도가 느리다. 따라서 파이썬으로 알고리즘 문제를 풀 때는 readline을 사용하는 편이 좋다.





맨 위로 이동하기