IdoCleanCode
article thumbnail
반응형

코딩 테스트 - 프로그래머스

 

중앙값 구하기
중앙값 구하기

 

문제

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬 했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주얼질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.

 

제한 사항

array의 길이는 홀수 입니다.


문제 원리

배열의 중앙값 구하는 원히는 1️⃣주어진 배열을 오름차순으로 정렬합니다. 2️⃣정렬된 배열에서 중앙에 위치하는 값을 반환합니다. 이런 과정이 필요합니다.

 

중앙값 구하는 원리
중앙값 구하는 원리

오름차순의 원리

배열의 오름차순하려면, 비교, 교환, 반복 이런 과정이 필요합니다.

  • 비교
    배열의 모든 요소를 순차적으로 비교합니다. 비교는 주로 연속된 두 요소 간에 이루어집니다.
  • 교환
    앞에 있는 요소가 뒤에 있는 요소보다 크다면, 두 요소의 위치를 바꿔줍니다. 이렇게 하면 작은 값이 앞으로, 큰 값이 뒤로 가게 됩니다.
  • 반복
    위의 비교와 교환 과정을 배열의 모든 요소에 대해 반복합니다. 

이런 원리는 버블 정렬 알고리즘을 사용됩니다. 

 

배열의 중앙값 구하는 원리

오름차순이나 내림 차순으로 정렬된 배열의 가운데 위치한 배열인덱스가 중앙값이 됩니다.

 

버블 정렬

간단한 정렬 알고리즘 중 하나로, 인접한 두개 요소를 비교하면서 큰값이 배열 뒤쪽으로 이동해가며 정렬이 이루어 집니다.

다음의 버블 정렬 기본 원리 입니다.

  1. 배열의 처음부터 시작하여 인접한 두요소를 비교합니다
  2. 뒤요소가 크면 위치를 교환합니다
  3. 이 과정이 배열의 끝까지 반복하여, 가장 큰 값이 배열의 가장 마지막으로 이동합니다.
  4. 마지막 요소를 제외한 나머지 요소를 과정을 반복합니다.

버블 정렬 단점은 배열의 크기가 큰 경우에는 비효율적일 수 있습니다.

 

 

버블 정렬 원리
버블 정렬 원리

 

 

문제 풀이

Python

버블 정렬 사용

def solution(arr):
    n = len(arr)

    for i in range(n):
        for j in range(n -i -1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]


    return arr[len(arr) // 2]

 

sorted()함수 사용

def solution(array):
    # sorted 함수를 이용해 array를 정렬
    sorted_array = sorted(array)
    # 정렬된 배열의 중앙값을 찾아 반환
    return sorted_array[len(sorted_array)//2]

sorted함수로 주어진 배열을 정렬하고 중앙 인덱스를 찾습니다.

 

JavaScript

버블 정렬 사용

function solution(array) {
    let n = array.length;

    // 버블 정렬
    for(let i = 0; i < n; i++) {
        for(let j = 0; j < n - i - 1; j++) {
            if(array[j] > array[j + 1]) {
                let temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }

    // 중앙값 반환
    return array[Math.floor(n / 2)];
}

console.log(solution([1, 2, 7, 10, 11]));  // 7
console.log(solution([9, -1, 0]));  // 0

 

sort()사용

function solution(array) {
    // sort 함수를 이용해 array를 정렬
    let sortedArray = array.sort((a, b) => a - b);
    // 정렬된 배열의 중앙값을 찾아 반환
    return sortedArray[Math.floor(sortedArray.length / 2)];
}

console.log(solution([1, 2, 7, 10, 11]));  // 7
console.log(solution([9, -1, 0]));  // 0

 

 

출처

https://school.programmers.co.kr/learn/courses/30/lessons/120811

반응형
profile

IdoCleanCode

@IdoCleanCode

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!