알고리즘 코딩 테스트 연습 정리노트
[JavaScript][알고리즘][프로그래머스][중앙값 구하기] sort()로 숫자 정렬해서 중앙값 구하기
와일드반
2023. 1. 12. 15:57
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/120811
내 답안 :
// 배열을 정렬한뒤 전체길이를 2로 나눈뒤 올림 or 반올림 or 버림 후 +1
function solution(array) {
let answer = 0;
array.sort();
//그냥 sort() 를 하면 문자열 취급으로 숫자의 크기순으로 X.
//ex) [4, 20, 100, 3000] 를 sort() 하면 [100, 20, 3000, 4] 로 재배열.
const arr = array.sort(function(a, b) {return a - b});
//x,y 둘다 같은 결과.
const x= Math.floor(array.length/2)
const y= parseInt(array.length/2)
//배열은 0부터 시작이므로 +1 해줄필요 X
answer = arr[y]
return answer;
}
문제 자체가 어려운 문제는 아니었다. 다만 한가지 몰랐던 점을 알게되어 정리해놓으려 한다.
문제는 정수 배열을 매개변수로 받아 중앙값을 구하는 쉽고 간단한 문제였다.
다만 과정에서 sort() 라는 내장 매서드를 사용하는데 sort()의 기본정렬 순서는 문자열의 유니코드 코드 포인트를 따른다. 때문에 위에서 예시를 든 것처럼 [4, 20, 100, 3000] 를 sort() 하면 [100, 20, 3000, 4] 로 정렬한다.
따라서 숫자를 오름차순이나 내림차순으로 정렬하려면 a-b와 같이 정렬 기준을 정해주면 쉽게 해결 가능하다.
참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
Array.prototype.sort() - JavaScript | MDN
sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
developer.mozilla.org