백준 2751번 수 정렬하기2 | [BACKJOON/Python / 2751] input이 느릴땐 sys.stdin을 사용하자

문제링크

 

 

 

 

https://www.acmicpc.net/problem/2751

 

 

문제

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

입력

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

출력

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


 

예제 입력 & 출력

 

풀이

시도1

count = int(input())
num = []

for i in range(count): 
    num_i = int(input())
    num.append(num_i)  

num.sort()  
for f in range(len(num)):
    print(num[f])

 

input을 사용하여 사용자로 부터 입력받은 후 제출하였더니 시간 초과가 발생하였습니다.

처리속도가 더 빨라야한점을 고려하여 input대신 sys.stdin.readline()을 사용하였습니다. 
 

 

파이썬 input()과 sys.stdin.readline() 뭘 사용할까?

파이썬에서 사용되는 두 가지 입력 함수, input()과 sys.stdin.readline()을 비교해 보며, 각각의 특징과 어떤 상황에서 더 적합한지 예시 코드와 함께 알아보겠습니다. input() 함수 # 문자열 입력 받기 nam

newstroyblog.tistory.com

이전에 input()과 sys.stdin.readline()의 적절한 사용법과 어떨때 사용하면 좋을지 포스팅한 내용이있는데 input보다 더 빠른 처리가 가능하기 때문에 시간초과가 발생하지 않을거 같습니다.

 

시도2

import sys

i = int(input())
num = []
for z in range(i):
    num.append(int(sys.stdin.readline().strip()))

num.sort()
for f in range(len(num)):
    print(num[f])

사용자로부터 N개의 숫자를 입력받는 부분을 sys.stdin.readline으로 처리하여 정렬후 한줄씩 출력하도록 작성하였습니다.

Top