N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
우선 2750번도 똑같이 오름차순 정렬이였고, 아래와 같이 입력하여 성공하였다.
N = int(input())
arr = []
for i in range(N):
a = int(input())
arr.append(a)
res = ' '.join(str(num) for num in sorted(arr))
print(res)
하지만 이 2751번에서 집중해야할 부분은 시간제한이다. 위와 같은 방식으로 입력할 경우, 시간초과가 발생하였다.
알고보니 일반적인 input()
함수는 사용자의 입력을 받아들이는 함수이지만, 대량의 입력을 받아야 할 때는 시간 초과 등의 문제로 인해 느려질 수 있다. 참고로 2751번에서 입력값은 1,000,000보다 작거나 같은 정수로 꽤나 대량의 입력을 받게 된다. 그래서 이럴 때는 sys.stdin.readline()
을 사용하면 보다 빠르게 입력을 처리할 수 있다.
import sys
N = int(input())
arr = []
for i in range(N):
arr.append(int(sys.stdin.readline()))
res = sorted(arr)
print('\n'.join(map(str, res))) #한 줄에 한 값씩 출력
‼️ 시간제한에 유의하면서 풀도록 하자