코딩테스트

[프로그래머스] 중앙값 구하기

john-lennon 2026. 4. 2. 11:14

문제 설명

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

 

제한사항

  • array의 길이는 홀수입니다.
  • 0 < array의 길이 < 100
  • 1,000 < array의 원소 < 1,000

입출력 예

array result
[1, 2, 7, 10, 11] 7
[9, -1, 0] 0

 

목적

정수 배열 array 에서 중앙값 return

 

나의 코드

function solution(array) {
    array.sort((a, b) => a - b);
    
    const length = array.length;
    
    const x = length - 1;
    const y = x / 2;
    
    return array[y];
}

 

다른 사람의 코드

function solution(array) {
  return array.sort((a, b) => a - b)[Math.floor(array.length / 2)];
}

 

나의 코드와 차이점

1. 불필요한 변수를 사용하지 않음

→ 나는 lenght, x, y 처럼 중간 계산값을 변수로 나눴지만, 다른 코드는 한 줄에서 바로 처리해서 더 간결하다.

2. Math.floor로 인덱스를 바로 계산함

→ 나는 (lenght - 1) / 2 로 계산 했지만 다른 코드는 Math.floor(array.length / 2)를 사용해서 중앙 인덱스를 직관적으로 표현했다.

3. 체이닝 방식 사용 (메서드 연결)

→ sort() 후 바로 [index]로 접근해서 값을 꺼내기 때문에 코드 흐름이 끊기지 않고 한 번에 읽힌다.

4. 의도가 더 명확함

→ 정렬 + 가운데 값 가져오기 과정에서 한 줄에 드러나서 문제 해결 방식이 더 직관적으로 보인다


 

느낀점

중앙값을 구할 때 단순히 계산만 하는 게 아니라 정렬 후 인덱스를 활용하는 방식으로 해결할 수 있다는 걸 알게 되었다. 기존에는 변수를 나눠서 단계별로 풀었는데, 다른 사람의 코드를 보니 한 줄로도 충분히 표현할 수 있어서 코드의 간결함을 느낄 수 있었다... 특히 Math.floor를 활용하면 중앙 인덱스를 더 직관적으로 구할 수 있다는 걸 깨달았다.