
https://www.acmicpc.net/problem/2751
참고 - sys 써야하는 이유
처음엔 그냥 단순하게 sort() 함수를 써서 구현하면 되는 줄 알았는데 에러가 떴다.
문제에서 받는 수의 개수 N의 범위가 1 ≤ N ≤ 1,000,000 이라고 되어 있다. 만약 N이 최대 범위에 가까운 수가 되면, 매우 많은 입력을 반복해서 받아야 되기 때문에 시간이 오래 걸리게 된다. 이를 해결하기 위해 sys.stdin.readline() 을 사용할 수 있다고 한다!
sys는 파이썬의 표준 라이브러리 중 하나로, 표준 입력, 출력을 처리할 때 유용하다.
sys.stdin 은 표준 입력에 대한 파일 객체이다. 표준 입력은 보통 키보드 입력과 연결되어 있기 때문에 input() 대신 sys.stdin.readline() 을 사용할 수 있다. 이 메서드는 표준 입력으로부터 한 줄을 읽어 문자열로 반환하는 메서드이다. 줄 맨 끝의 개행 문자(\n)을 포함해 입력 받기 때문에, 개행 문자를 없애고 싶은 경우 strip() 메서드까지 사용해주면 된다.
결국 처음 작성한 코드에서
1. import sys 추가
2. num = input(int()) 을 num = int(sys.stdin.readline().strip()) 로 바꾸기
이 두 부분을 변경해주었더니 성공적으로 통과했다.
import sys
n = input(int())
nums = []
for _ in range (n):
num = int(sys.stdin.readline().strip())
nums.append(num)
nums.sort()
for num in nums:
print(num)
오랜만에 파이썬으로 풀어봤더니 새로운 걸 알게 되어서 좋았다!