STUDY_SEONMIN
2751. 수 정렬하기 2 본문
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
시간복잡도 O(nlogn)인 알고리즘으로 풀어보세요.
합병정렬
https://ko.wikipedia.org/wiki/%ED%95%A9%EB%B3%91_%EC%A0%95%EB%A0%AC
합병 정렬 - 위키백과, 우리 모두의 백과사전
합병 정렬 또는 병합 정렬(merge sort)은 O(n log n) 비교 기반 정렬 알고리즘이다. 일반적인 방법으로 구현했을 때 이 정렬은 안정 정렬에 속하며, 분할 정복 알고리즘의 하나이다. 존 폰 노이만이 1945
ko.wikipedia.org
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr)//2
left_arr = merge_sort(arr[:mid])
right_arr = merge_sort(arr[mid:])
merged_arr = []
i, j = 0, 0
while i < len(left_arr) and j < len(right_arr):
if left_arr[i] <= right_arr[j]:
merged_arr.append(left_arr[i])
i += 1
else:
merged_arr.append(right_arr[j])
j += 1
merged_arr = merged_arr + left_arr[i:] + right_arr[j:]
return merged_arr
N = int(input())
numbers = [int(input()) for _ in range(N)]
sorted_numbers = merge_sort(numbers)
for number in sorted_numbers:
print(number)
- 백준 알고리즘 사이트에서는 시간초과 문제로 인해 PyPy3파일로 제출해야 합니다.
'STUDY > Baekjoon Algorithm' 카테고리의 다른 글
2108. 통계학 (0) | 2021.07.26 |
---|---|
10989. 수 정렬하기 3 (0) | 2021.07.25 |
2750. 수 정렬하기 (0) | 2021.07.22 |
1436. 영화감독 숌 (0) | 2021.07.22 |
1018. 체스판 다시 칠하기 (0) | 2021.07.21 |
Comments