수 정렬하기 2 - 2751
Category: Baekjoon
수 정렬하기 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을 사용하는 편이 좋다.