알고리즘 문제(SOL)

[백준/2751/파이썬] 수 정렬하기2

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

 

2751번: 수 정렬하기 2

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

www.acmicpc.net

Problem

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

조건

  • 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
  • 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

SOL

정렬을 하면되는 문제이다. 물론 python에는 sort()라는 nlogn의 우수한 정렬알고리즘을 기본적으로 제공하고 있다.

  • 정렬은 종류가 많고, 그 중에 성능이 보장되고 널리 쓰이는 것중 하나가 퀵정렬이다.
import sys
input = sys.stdin.readline
N= int(input())
arr=[int(input().rstrip()) for _ in range(N)]

arr.sort()
for ar in arr:
    print(ar)

 

하지만, 이건 quick sorting ,merge sorting등을 구현할 수 있냐고 묻는 문제가 아니였나 싶다.

( 내친김에 다음 글은 정렬에 대해서 써볼까?) 일단, 최소한 어느정도의 시간복잡도를 내부적으로 갖고있는지 알고 쓰자!