문제

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

 

입력

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

 

정답

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

 

정답

import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline

N = int(input())
arr = []
for i in range(N):
    arr.append(int(input()))

def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    mid = len(arr)//2
    L = merge_sort(arr[:mid])
    R = merge_sort(arr[mid:])
    mer = []

    i = 0
    j = 0
    while i < len(L) and j < len(R):
        if (L[i] > R[j]):
            mer.append(R[j])
            j += 1
        else:
            mer.append(L[i])
            i += 1

    if i != len(L):
        mer += L[i:]
    if j != len(R):
        mer += R[j:]
    return mer

mer = merge_sort(arr)
for i in mer:
    print(i)

'Coding_Test > Python Code Review' 카테고리의 다른 글

[백준-10989] 수 정렬하기3  (0) 2023.11.02
[백준-1517] 버블 소트  (0) 2023.11.02
[백준-11004] K번째 수  (0) 2023.11.02
[백준-11399] ATM  (1) 2023.11.01
[백준-1427] 소트인사이드  (0) 2023.11.01