https://school.programmers.co.kr/learn/courses/30/lessons/120811
홀수 개수의 무작위 숫자 배열을 입력으로 받아 그 중 중앙값을 추출하는 문제이다.
문제해결 논리는 다음과 같다.
1. 배열을 정렬한다.
2. 중간 인덱스 값에 위치한 요소를 찾는다.
배열을 정렬할 때 sort함수를 이용할 수 있는데 이 때 주의해야 할 것이 있다.
sort 함수는 문자열의 유니코드를 기본 정렬 순서로 가진다.
따라서 [11, 12, 0, 1, 2]와 같은 배열을 sort하면 [0, 1, 11, 12, 2] 순서가 된다.
숫자를 비교하기 위해서 sort에 비교함수를 매개변수로 사용해야 한다.
비교함수는 인자로 두 요소(a, b)를 받아 number를 리턴한다.
이 number가 음수면 a가 b 이전으로, 양수면 a가 b 다음으로 옮겨진다. (0이면 a와 b가 같다.)
따라서 위의 배열 [11, 12, 0, 1, 2]에 다음의 비교함수를 적용시키면
[11, 12, 0, 1, 2].sort((a,b) => (a-b))
sort 알고리즘에 의해 두 요소를 골라 비교한 뒤 작은 수가 앞에, 큰 수가 뒤에 오게 된다.
이제 array를 정렬했으니 중앙 인덱스(length가 홀수 이므로 array.length / 2의 floor 값)의 값이 중앙값이 된다.
function solution(array) {
array.sort((a,b) => a-b);
var answer = array[Math.floor(array.length / 2)];
return answer;
}
'Algorithm > Programmers' 카테고리의 다른 글
Programmers 120812 최빈값 구하기 Javascript (0) | 2024.05.08 |
---|---|
Programmers 120808 분수의 덧셈 Javascript (0) | 2024.04.16 |