class Solution { public int solution(int[] array) { int i = 0; if (array.length == 1) return array[0]; int center = array.length/2; while(i + 1 < array.length) { int j = i + 1; while(j < array.length) { if (array[i] > array[j]) { int temp = array[j]; array[j] = array[i]; array[i] = temp; } j++; } i++; } int answer = array[center]; return answer; } }
- 문제에서 원하는 것은 오름차순으로 정렬한 후 중앙에 위치한 값을 구하는 문제입니다.
- 매개변수 array의 길이는 0 보다 크고 홀수라고 명시되어 있습니다.
2-1. 선택정렬 알고리즘을 사용하여 오름차순으로 정렬해줍니다.
2-2. array의 길이가 1이라면 array[0]의 값을 반환하여 문제를 마칩니다.
2-3. array의 길이가 1보다 큰 홀수라면 반복문을 통해 오름차순 정렬을 해줍니다.- 중앙값의 메모리 주소를 가지고 있는 index는 array의 길이/2입니다. (홀수이기때문에)
- 이를 통해 중앙값의 메모리 주소를 통해 answer에 값을 복사하여 결과값을 얻습니다.
선택 정렬(Selection Sort)
은 가장 작은(또는 큰) 원소를 찾아서 배열의 맨 앞(또는 맨 뒤)으로 옮겨 정렬하는 간단한 정렬 알고리즘입니다.
이 정렬 방법은 배열을 순회하면서 배열 중 가장 작은 원소(또는 큰 원소)를 찾은 후, 현재 위치와 교환하는 과정을 반복하여 정렬을 수행합니다. 선택 정렬은 정렬되지 않은 부분 중에서 최솟값을 찾고, 그 값을 정렬된 부분의 맨 앞에 계속해서 쌓아가는 방식으로 동작합니다.
이 알고리즘의 시간 복잡도는 O(n^2)으로, 입력 배열의 크기에 비례하여 이차 함수적으로 증가합니다. 선택 정렬은 간단하고 직관적이지만, 큰 크기의 배열에 대해 비효율적일 수 있습니다.