[programmers] 중앙값 구하기

J-Cheol·2023년 11월 6일
0

프로그래머스

목록 보기
3/27
post-thumbnail

문제


프로그래머스 문제 링크

풀이 코드


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;
    }
}

리뷰


  1. 문제에서 원하는 것은 오름차순으로 정렬한 후 중앙에 위치한 값을 구하는 문제입니다.
  2. 매개변수 array의 길이는 0 보다 크고 홀수라고 명시되어 있습니다.
    2-1. 선택정렬 알고리즘을 사용하여 오름차순으로 정렬해줍니다.
    2-2. array의 길이가 1이라면 array[0]의 값을 반환하여 문제를 마칩니다.
    2-3. array의 길이가 1보다 큰 홀수라면 반복문을 통해 오름차순 정렬을 해줍니다.
  3. 중앙값의 메모리 주소를 가지고 있는 index는 array의 길이/2입니다. (홀수이기때문에)
  4. 이를 통해 중앙값의 메모리 주소를 통해 answer에 값을 복사하여 결과값을 얻습니다.

선택정렬


선택정렬이란

선택 정렬(Selection Sort)은 가장 작은(또는 큰) 원소를 찾아서 배열의 맨 앞(또는 맨 뒤)으로 옮겨 정렬하는 간단한 정렬 알고리즘입니다.
이 정렬 방법은 배열을 순회하면서 배열 중 가장 작은 원소(또는 큰 원소)를 찾은 후, 현재 위치와 교환하는 과정을 반복하여 정렬을 수행합니다. 선택 정렬은 정렬되지 않은 부분 중에서 최솟값을 찾고, 그 값을 정렬된 부분의 맨 앞에 계속해서 쌓아가는 방식으로 동작합니다.
이 알고리즘의 시간 복잡도는 O(n^2)으로, 입력 배열의 크기에 비례하여 이차 함수적으로 증가합니다. 선택 정렬은 간단하고 직관적이지만, 큰 크기의 배열에 대해 비효율적일 수 있습니다.

profile
신입 백엔드 개발자(JAVA, Spring Boot, MYSQL)

0개의 댓글