JavaScript 코딩 연습 / Median
2020. 3. 10. 16:12ㆍToday I solved/Problems
문제 / 웹사이트
중앙값 (Median) / CheckiO
난이도
Simple / 초급
내용
숫자로 이루어진 배열에서, 중앙값(median)을 구하는 함수를 작성하세요.
※ 중앙값(median): 주어진 값들을 순서대로 정렬했을 때 중앙에 위치하는 값. 값이 짝수개일 경우 중앙에 위치한 두 값의 평균이 됨.
예
median([1, 2, 3, 4, 5]) == 3
median([3, 1, 2, 5, 3]) == 3
median([1, 300, 2, 200, 1]) == 2
median([3, 6, 20, 99, 10, 15]) == 12.5
모범 답안
"use strict";
function median(data) {
data = data.sort((a, b) => a - b)
n = Math.floor(data.length / 2)
return (data[n] + data[data.length - 1 - n]) / 2
}
"use strict";
function median(data) {
// We should copy array to avoid modification external data.
let sorted = data.slice().sort((a,b) => a - b);
// "- 1" makes middle pointer whole,
// if length is odd and rational, if length is even.
let middle = (data.length - 1) / 2;
// So, if length is odd, floor and ceil will be equal.
// If length is even, we will get its average.
return (sorted[Math.floor(middle)] + sorted[Math.ceil(middle)])/2;
}
"use strict";
function median(array) {
const arrayLength = array.length;
const sorted = array.sort((a, b) => a - b);
if (arrayLength % 2) {
return sorted[(arrayLength-1)/2];
} else {
return (sorted[arrayLength/2] + sorted[arrayLength/2-1]) / 2;
}
}
공부해야 될 부분
- Math.floor(): 주어진 값 이하의 가장 큰 정수를 반환하는 메서드 / 참고자료: Math.floor() - JavaScript
개선해야 될 부분
- 목표 인덱스 외 값을 다 지워버리지 말고, 인덱스의 위치 자체를 계산할 수 있는 알고리즘을 만들려고 하기
내 답안
"use strict";
function median(data) {
// Sort numbers from the smalles to biggest
data.sort((a,b) => a - b);
// if array has an odd number of entities, find the one in the middle of the array
if (data.length % 2 != 0) {
while (data.length > 1) {
data.pop();
data.shift();
}
return data[0];
// if array has an even number of entities, find the two in the middle of the array and make an average of them
} else {
while (data.length > 2) {
data.pop();
data.shift();
}
return (data[0] + data[1]) / 2;
}
}
'Today I solved > Problems' 카테고리의 다른 글
JavaScript 코딩 연습 / 완주하지 못한 선수 (0) | 2020.03.13 |
---|---|
JavaScript 코딩 연습 / Weak Point (0) | 2020.03.12 |
JavaScript 코딩 연습 / Moore Neighborhood (0) | 2020.03.11 |
JavaScript 코딩 연습 / Non-unique Elements (0) | 2020.03.07 |
JavaScript 코딩 연습 / Long Repeat (0) | 2020.03.07 |