중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
배열은 항상 홀수
처음엔 sort함수만 쓰면 다 되는 줄 알았다. 하지만.. 계속 에러가 나서 찾아보니
숫자 배열에서는 주의해줘야 할 것이 있었다.
먼저, sort() 함수는 배열을 오름차순으로 정렬시켜주는 함수이다.
그래서 보통은 " array.sort() " 를 사용하면 오름차순으로 정렬이 된다.
하지만 숫자 배열은 다르다.
sort() 함수는 인자로 정렬 기준을 나타내는 콜백 함수를 받는다. 그리고 다음과 같은 규칙을 따른다.
숫자가 아닌 문자 배열에서는 들어있는 문자열의 길이를 가지고 비교를 하는 것이기 때문에 오류가 없지만, 숫자는 길이보다는 숫자의 의미가 더 중요하기 때문에 이러한 일이 일어나는 것 같다.
따라서 숫자 배열을 제대로 오름차순 정렬하기 위해서는 첫 번째 인자에서 두 번째 인자를 빼줘야 한다.
array.sort((a, b) => a - b);
반대로 내림차순으로 정렬하기 위해서는 두 번째 인자에서 첫 번짜 인자를 빼줘야 한다.
array.sort((a, b) => b - a);
function solution(array) {
var answer = array.sort((a,b) => b - a);
var middle = answer[parseInt((answer.length-1)/2)];
return middle;
}