Search

SWEA 5204 병합 정렬

생성일
2024/11/14 03:55
태그
구현
정렬
재귀

문제 설명

리스트를 병합 정렬로 오름차순 정렬하면서, 중간 위치 원소와 왼쪽 마지막 원소가 오른쪽 마지막 원소보다 큰 경우의 수를 출력하는 프로그램을 작성하는 문제

예제 입력/출력

입력1
2 5 2 2 1 1 3 10 7 5 4 1 2 10 3 6 9 8
Plain Text
복사
출력1
#1 2 0 #2 6 6
Plain Text
복사

제약 조건

1T501 ≤ T ≤ 50
5N1,000,0005 ≤ N ≤ 1,000,000
0ai1,000,0000 ≤ a_i ≤ 1,000,000

문제 풀이

풀이 병합 정렬 - O(NlogN)O(NlogN)
리스트를 재귀적으로 분할하여 병합 정렬을 수행
병합 과정에서 왼쪽 마지막 원소가 오른쪽 마지막 원소보다 큰 경우 cnt를 증가
# 왼쪽 마지막 원소가 오른쪽 마지막 원소보다 큰 경우 cnt + 1 if low_arr[-1] > high_arr[-1]: cnt += 1
Python
복사
정렬이 완료된 후, 리스트의 중간 위치 원소 L[N//2]의 값을 구한다.

풀이 코드

풀이 병합 정렬 - O(NlogN)O(NlogN)