
문제설명
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다.
예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다.
정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
매개변수로 들어오는 배열을 오름차순으로 정렬한 뒤 배열의 중간에 있는 값을 return해주면 구할 수 있습니다. 정렬에는 JavaScript 함수인 sort()를 사용했습니다.
function solution(array){
return array.sort((a, b) => a - b)[Math.floor(array.length / 2)]
}
배열을 정렬하는 JavaScript 함수입니다.
array.sort([compareFuction])
파라미터
compareFunction
정렬 순서를 정의하는 함수입니다.
이 값이 생략되면 배열의 element들은 문자열로 취급되며 유니코드 값 순서대로 정렬됩니다.
두 개의 배열 element를 파라미터로 입력받을 수 있습니다.
a, b 두개의 element를 파라미터로 입력받을 경우
- 리턴값이 0보다 작으면 a가 b보다 앞에 오도록 정렬
- 리턴값이 0보다 크면 b가 a보다 앞에 오도록 정렬
- 리턴값이 0이라면 순서를 변경하지 않습니다.
리턴값
compareFunction의 규칙에 따라 정렬된 배열을 리턴합니다.
이때, 원본 배열이 정렬되고, 리턴하는 값 또한 원본 배열을 가리키게 됩니다.
원본 배열이 변경되지 않으려면 toSorted()함수를 사용해야 합니다.
문제설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때,
최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
map객체를 통해 주어진 배열에서 해당 인덱스를 키값으로 인덱스의 빈도를 데이터값으로 설정하여 빈도가 가장 큰 값을 리턴하는 식으로 구할 수 있었습니다.
function solution(array) {
let counting = new Map();
let countArray = new Array();
let max = 0;
for (let i of array) {
// key값에 데이터가 없으면 0으로 설정
// map에 키값은 해당 인덱스, 데이터는 빈도(갯수) 설정
// max를 통해 빈도 체크
if (!counting.has(i)) counting.set(i, 0);
if (counting.has(i)) counting.set(i, counting.get(i) + 1);
while (counting.get(i) > max) max++;
}
for (let [k, v] of counting) {
// 최대 빈도 값을 countArray에 할당
if (v === max) countArray.push(k);
}
// 배열의 길이가 1이면 최빈값이 1개이므로 최빈값 리턴 여러개면 -1 리턴
return countArray.length === 1 ? countArray[0] : -1;
}
ES6부터 새롭게 도입된 개념으로 키와 값을 연결하는 데이터 유형이다.
- 기존 객체와 달리 다양한 타입, 심지어 객체로도 키 설정이 가능하다.
- 객체와 달리 자료를 반복할 수 있어 for-of나 스프레드 연산자 사용이 가능하다.
- 배열처럼 삽입된 순서나 크기를 구하기 쉽다.
- 실행 시까지 키를 알 수 없고, 모든 키와 값들이 동일한 type일 경우 사용을 추천한다.
메서드
new Map() : 일반 생성자 함수와 같이 변수처럼 사용이 가능하다.
map.set(key, value) : 객체와 비슷하게 키와 값을 한 번에 선언할 수 있고 체이닝도 가능하다.
map.get(key) : 객체와 비슷하게 인자에 키를 넣어 값이나 undefined를 반환한다.
map.has(key) : 데이터 존재 유무를 boolean 값으로 반환한다.
map.delete(key) : 키로 값을 제거한다.
map.clear() : 모든 데이터를 삭제한다.
map.size : 데이터 갯수를 반환한다.
map.keys() : iterable 키에 대해 반복 가능한 값을 반환한다.
map.values() : iterable 값에 대해 반복 가능한 값을 반환한다.
map.entries() : iterable 객체로 반환되며 각 값은 [key, value] 형태이다.
map.next() : entries 메서드로 반환된 iterable 객체 뒤에 활용되며 순차적으로 value, done property를 제공한다.
참조