백준

[백준] 2751 : 수 정렬하기 2 (Python/파이썬)

sson-coding 2025. 10. 27. 23:39

문제 링크

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

문제

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

입력

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

출력

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

예제

입력

5
5
4
3
2
1

출력

1
2
3
4
5

정답 및 풀이

import sys

n = int(sys.stdin.readline())
numbers = [int(sys.stdin.readline()) for _ in range(n)]

numbers.sort()

for num in numbers:
    print(num)
  1. import sys
    • 입력 속도를 빠르게 하기 위해 sys 모듈 사용
  2. n = int(sys.stdin.readline())
    • 정렬할 수의 개수 n을 입력받음
  3. arr = [int(sys.stdin.readline()) for _ in range(n)]
    • 반복문을 이용해 n개의 정수를 입력받아 리스트로 저장
  4. arr.sort()
    • 리스트를 오름차순으로 정렬
  5. for i in arr: print(i)
    • 정렬된 값을 한 줄씩 출력

새롭게 배운 내용 및 느낀점

  • sys.stdin.readline()
    • 빠른 입출력을 위해 사용
    • input() 보다 빠름
  • arr.sort() , sorted()
    • Python 의 내장 정렬 알고리즘(Timesort)
    • 시간복잡도 O(N log N)
    • 데이터가 많으면 시간 오래 걸림