본문 바로가기
Python/Baekjoon

[백준] 2751번 : 수 정렬하기 2 (Python)

by 고구마랑쪼오꼬랑 2024. 7. 16.

문제

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

(불러오기 오류..)

 

 

소스 코드

import sys

n=int(input())
arr=[]

for i in range(n):
    arr.append(int(sys.stdin.readline().strip()))

s_arr=sorted(arr) #정렬 함수인 sorted는 파이썬 내장 함수이다.

for i in s_arr:
    print(i)

 

 

정리

2750번 문제와 비슷한 문제인것 같아 비슷하게 코딩했더니 시간초과 오류와 런타임 오류가 났다.

이유는 2750번은 첫째줄에 주어진 수의 개수가 1  N  1,000 이었는데, 해당 문제는 1 ≤ N ≤ 1,000,000 이었기 때문에 시간초과 오류가 난것이었다.

 

힌트는 sys.stdin.readline() 이였다. 

sys.stdin.readline()는 input()보다 입력을 받을 때 속도가 더 빠르다. 그 이유로는,

1. input()은 매개변수로 prompt message를 받아 입력을 받기 전에 prompt message를 출력해야한다.
2. 입력받은 값의 개행 문자를 삭제시키고 반환한다.

 

이러한 단계를 거치기 떄문에 input()은 sys.stdin.readline()보다  속도에서 느리다.

 


- sys.stdin.realine()에 대한 - 

 

Python sys.stdin.readline() 사용 / 알고리즘 입력 받기

주로 파이썬에선 알고리즘을 입력받을 때 input() 을 많이 씁니다. 하지만 input() 을 사용하면 종종 시간 초과 에러가 뜰 때가 있습니다. 이를 방지하기 위해서 사용하는 sys.stdin.input() 을 소개하고

yeomss.tistory.com

 


 

1. import sys 를 임폴트

2. sys.stdin.readline() 이용

2. sorted() 함수를 이용!!! (지금까지 몰랐다...)