2751번: 수 정렬하기 2

문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

이 문제도 지난번에 풀었던 2750과 동일하게 풀려고 했다. 근데 시간초과가 떠서 실패했다... 찾아보니 시간복잡도가 O(nlogn)이어야 한다고 나왔다. 이전문제와 뭐가 다른가 했더니 최대 수의 개수가 많이 차이가 났다. sort 코드를 새로 짜는 것보다 input 받는 시간을 줄이는 방안을 선택해보았다.

역시 sys.stdin.readline()을 써주니 바로 통과가 되었다! 앞으로 알고리즘 문제에서는 input()보다 sys.stdin.readline()을 사용해야겠다...!

import sys

n = int(sys.stdin.readline())

data = []
for i in range(0, n):
    data.append(int(sys.stdin.readline()))

data.sort()

for i in range(0, n):
    print(data[i])