중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array
가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
array
의 길이는 홀수입니다.array
의 길이 < 100array
의 원소 < 1,000array | result |
---|---|
[1, 2, 7, 10, 11] | 7 |
[9, -1, 0] | 0 |
입출력 예 #1
입출력 예 #2
const solution = (array) => {
array.sort((a, b) => a - b);
return array[Math.floor(array.length/2)];
}
/*
내가 처음 작성한 코드이다.
1. array.sort((a, b) => a - b): 이 부분은 주어진 배열 array를 오름차순으로 정렬한다.
2. return array[Math.floor(array.length/2)]: 이 부분은 정렬된 배열에서 중앙값을 반환한디.
배열의 길이(array.length)를 2로 나누면 중앙 인덱스가 나오지만, 이 값은 소수점이 될 수 있으므로
Math.floor() 함수를 사용하여 내림 처리를 해준다. 그 결과로 얻은 인덱스 값을 이용해 배열에서
해당 위치의 값을 가져와 반환한다.
*/
const solution = (array) =>
array.sort((a, b) => a - b)[Math.floor(array.length/2)];
/* 위의 코드를 최대한 간단히 한줄로 작성해 보았다. */
const solution = (array) =>
array.sort((a, b) => a - b).at(Math.floor(array.length/2));
/*
다른 분의 코드를 보다가 at메서드를 사용하여 작성하는 방법도 공부해두면 좋을거 같아서 작성해보았다.
1. array.sort((a, b) => a - b): 이 부분은 주어진 배열 array를 오름차순으로 정렬한다.
2. at(Math.floor(array.length/2)): 이 부분은 정렬된 배열에서 중앙값을 반환한다.
at() 메소드는 배열에서 지정된 인덱스에 있는 요소를 반환하는 JavaScript 메소드이다.
배열의 길이(array.length)를 2로 나누면 중앙 인덱스가 나오지만, 이 값은 소수점이 될 수 있으므로
Math.floor() 함수를 사용하여 내림 처리를 해준다. 그 결과로 얻은 인덱스 값을 .at() 메소드에
전달하여 해당 위치의 값을 가져와 반환한다.
*/