[중앙 값 구하기]
문제
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
제한사항
array의 길이는 홀수입니다.
0 < array의 길이 < 100
-1,000 < array의 원소 < 1,000
입출력 예
array | num2 |
[1, 2, 7, 10, 11] | 7 |
[9, -1, 0] | 0 |
Ex1) 본문과 동일합니다.
Ex2) 9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.
💡나의 코드
function solution(array) {
console.log(array.sort());
return array.sort((a, b) => a - b)[Math.floor(array.length / 2)];
}
sort()함수에 대해 공부가 됐던 문제!
// 오답코드입니다.오답코드입니다.오답코드입니다.오답코드입니다.
// function solution(array) {
// //1. 배열 오름차순 정렬
// let arr = array.sort();
// //2. 배열 중앙 인덱스 구하기
// let index = Math.floor(arr.length / 2);
// console.log(arr);
// console.log(index);
// return arr[index];
// }
===================================================================
function solution(array) {
//1. 배열 오름차순 정렬
let arr = array.sort((a, b) => a - b);
//2. 배열 중앙 인덱스 구하기
let index = Math.floor(arr.length / 2);
console.log(arr);
console.log(index);
return arr[index];
}
처음에 이렇게 풀었었는데 테스트는 다 통과 하지만 채점하면 정답률이 44.4퍼가 떴다.
콘솔로 이것저것 찍어봐도 문제가 없어 보였는데 왜지??하고 싶어 검색해보니 sort()함수는 정렬할 때 요소를 문자열 취급을 한다고 한다.
그래서 테스트 케이스에
[24, 7, 52, 61, 19, 76, 33] 이렇게 넣고 출력해보니 [19, 24, 33, 52, 61, 7, 76] 이렇게 출력됐다.
그래서 내가 원하는대로 정렬을 하고 싶다면 sort()함수 안에 콜백함수를 넣어서 정렬을 해줘야 한다.(compareFunction)
오름차순은
array.sort((a, b) => a - b)
내림차순은
array.sort((a, b) => b - a)
'[IT 지식] > 알고리즘' 카테고리의 다른 글
[프로그래머스 Lv0] 코딩테스트 입문 Day 2 - 배열 두 배 만들기(feat. 자바스크립트) (0) | 2022.10.25 |
---|---|
[프로그래머스 Lv0] 코딩테스트 입문 Day 2 - 분수의 덧셈(feat. 자바스크립트) (0) | 2022.10.25 |
[프로그래머스 Lv0] 코딩테스트 입문 Day 2 - 숫자 비교하기(feat. 자바스크립트) (0) | 2022.10.25 |
[프로그래머스 Lv0] 코딩테스트 입문 Day 2 - 두 수의 나눗셈(feat. 자바스크립트) (0) | 2022.10.25 |
[프로그래머스 Lv0] 코딩테스트 입문 Day 1 - 사칙연산(feat. 자바스크립트) (0) | 2022.10.25 |