본문 바로가기
자바스크립트(JavaScript)/프로그래머스 문제풀기

[programmers - js] 중앙값 구하기 / sort((a,b) => a - b)

by yerica 2024. 12. 16.

 

나의 풀이

sort() 메서드를 통해 오름차순으로 배열을 정렬한 뒤, 배열의 개수를 절반으로 나누고 정수로 만들어 인덱스를 출력했다.

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

 

sort() 메서드

sort() 메서드는 요소를 문자열로 변환한 다음 유니코드 순서에 따라 정렬하는 메서드이다.

이를 숫자 배열에 사용하면 예상치 못한 결과가 나올 수 있다.

(예를들어, 숫자 10 이 숫자 2보다 앞서서 정렬됨)

이때, sort 메서드에 콜백 함수를 전달하여 숫자 배열을 올바르게 정렬 할 수 있다.

 

sort ( ( a, b ) => a - b )

sort 메서드에 콜백 함수 ( a, b )는 두 요소 a 와 b를 비교하는 역할을 한다.

a 와 b를 비교하여 반환되는 값이 음수값인지, 양수값인지, 0 인지에 따라 요소의 정렬 순서가 결정된다.

a - b 반환 값 반환 값의 의미 정렬 순서
음수 a 가 b보다 작다 ( a < b ) a가 b보다 앞에 위치
양수 a가 b보다 크다 ( a > b ) a가 b보다 뒤에 위치
0 a와 b가 같다 ( a === b) 순서 유지

 

다음은 sort()를 사용한 예시이다.

const people = [
    { name: "Alice", age: 25 },
    { name: "Bob", age: 20 },
    { name: "Charlie", age: 30 }
];

// 나이 오름차순 정렬
people.sort((a, b) => a.age - b.age);
console.log(people);
// 출력:
// [
//   { name: "Bob", age: 20 },
//   { name: "Alice", age: 25 },
//   { name: "Charlie", age: 30 }
// ]​

 


a.age와 b.age를 비교하여, 두 값의 차이를 기준으로 정렬했다.