< 문제 분석 및 풀이 방법 >
Backjoon :: K번째 수 문제는 MergeSort를 활용해 풀 수 있다.
- 범위가 500만이기 때문에 O(n^2) 시간복잡도로는 해결할 수 없다.
-
따라서 O(nlogn) 시간복잡도인 QuickSort와 MergeSort를 사용해야 하는데 평균 O(nlogn)인 MergeSort를 사용했다.
- MergeSort 작동 방식
- 현재 배열 num과 임시 배열 tmp를 파라미터로 넘긴다.
- start < end 가 아닐 경우까지 쪼갠다.
- 다 쪼개졌다면 MergeSort 함수로 넘어간다.
- num 배열을 tmp 배열에 옮긴다.
- tmp 배열의 left, right 인덱스를 비교하면서 num 배열에 저장한다.
- while문을 통해 남아있는 배열을 num 배열에 옮긴다.
< 소스 코드 >
1 |
|