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

·2023년 4월 26일
0

코테 풀기

목록 보기
1/26
post-thumbnail

2751번

문제

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

입력

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

출력

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

문제 바로가기

백준 2751번 문제


✏️분석 및 풀이

우선 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))) #한 줄에 한 값씩 출력

‼️ 시간제한에 유의하면서 풀도록 하자

0개의 댓글