문제 설명
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 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를 활용하면 중앙 인덱스를 더 직관적으로 구할 수 있다는 걸 깨달았다.
'코딩테스트' 카테고리의 다른 글
| [프로그래머스] 피자 나눠 먹기 (2) (0) | 2026.04.05 |
|---|---|
| [프로그래머스] 피자 나눠 먹기 (1) (0) | 2026.04.05 |
| [프로그래머스] 짝수는 싫어요 (0) | 2026.04.04 |
| [프로그래머스] 최빈값 구하기 (0) | 2026.04.03 |
| [프로그래머스] 배열 두 배 만들기 (0) | 2026.04.01 |