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은 해결되지않는다.
'알고리즘' 카테고리의 다른 글
[JAVA]ArrayList 사용법 (0) | 2021.11.23 |
---|---|
1495번 기타리스트 백준 (0) | 2021.11.21 |
동적계획법 (DP: Dynamic Programming) Python (0) | 2021.11.04 |
계수 정렬(Counting Sort) 알고리즘 (0) | 2021.11.04 |
한번에 2개의 원소를 입력 받는 리스트의 정렬 방법 (0) | 2021.11.04 |