def mergeSort(array):
    if len(array) <= 1:
        return array
    left, right = list(), list()
    mid   = len(array) // 2
    left  = mergeSort(array[:mid])
    right = mergeSort(array[mid:])
    
    i, j, k = 0, 0, 0
    
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            array[k] = left[i]
            i +=1
        else :
            array[k] = right[j]
            j+=1
        k +=1
    if i == len(left):
        while j < len(right):
            array[k] = right[j]
            j += 1 
            k += 1
    if j == len(right):
        while i < len(left):
            array[k] = left[i]
            i +=1
            k +=1
    return array
    
n = int(input())
nList = []
for _ in range(n):
    nList.append(int(input()))
nList = mergeSort(nList)
for data in nList:
    print(data)

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

 

2751번: 수 정렬하기 2

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

www.acmicpc.net

 

위 문제를 pypy3 을 활용해서 해결하면 되는데 python3은 해결되지않는다.

+ Recent posts