import sys
from typing import List
# 정렬하며 병합하기
def mergeTwoLists(left: List[int], right: List[int]) -> List[int]:
result = []
l, r = 0, 0
while l < len(left) and r < len(right):
if left[l] <= right[r]:
result.append(left[l])
l += 1
else:
result.append(right[r])
r += 1
if len(left) == l:
result = result + right[r:]
elif len(right) == r:
result = result + left[l:]
return result
# 반으로 나누기
def sortList(A: List[int]) -> List[int]:
if len(A) == 1:
return A
mid = len(A)//2
left = sortList(A[:mid])
right = sortList(A[mid:])
return mergeTwoLists(left, right)
A = [int(sys.stdin.readline()) for i in range(int(sys.stdin.readline()))]
m = sortList(A)
print(*m, sep='\n')
'알고리즘 테스트' 카테고리의 다른 글
[백준 1260번] DFS와 BFS (Python) (0) | 2021.02.06 |
---|---|
[백준 1427번] 소트인사이드 (Python) (0) | 2021.01.20 |
[백준 11047번] 동전 0 (Python) (0) | 2021.01.15 |
[백준] 2798번 블랙잭 (0) | 2021.01.09 |
[프로그래머스] 예산 (0) | 2020.12.10 |