모든 요소가 새 유형 ID를 나타내는 새 목격 배열이 주어지면 가장 자주 목격되는 유형의 ID를 결정하십시오. 1개 이상의 유형이 최대 금액만큼 발견되면 가장 작은 ID를 반환합니다.
예
arr = [1,1,2,2,3]
종류는 각각 2가지 유형 1, 유형 2 그리고 유형 3의 한 목격.
두 번 본 두 가지 유형 중 더 낮은 유형 1을 선택하십시오.
기능 설명
아래 편집기에서 migratoryBirds 기능을 완료하십시오 .
migratoryBirds에는 다음 매개변수가 있습니다.
보고
입력 형식
제약
샘플 입력 0
6
1 4 4 4 5 3
샘플 출력 0
4
설명 0
다양한 유형의 새가 다음 빈도로 발생합니다.
가장 높은 빈도에서 발생하는 유형 번호는 유형 4 입니다. 그래서 우리는 결과값으로 4 를 출력합니다.
샘플 입력 1
11
1 2 3 4 5 4 3 2 1 3 4
샘플 출력 1
3
설명 1
다양한 유형의 새가 다음 빈도로 발생합니다.
두 가지 유형의 빈도는 3, 그리고 그 중 낮은 유형은 3.
※ 출처 : 해커랭크-철새 [migratory-birds]
해답
function migratoryBirds(arr) {
// 철새유형별 Map 선언
let migratoryBirdsMap = new Map();
migratoryBirdsMap.set(1, 0);
migratoryBirdsMap.set(2, 0);
migratoryBirdsMap.set(3, 0);
migratoryBirdsMap.set(4, 0);
migratoryBirdsMap.set(5, 0);
// 위에서 선언한 Map에 유형별 Counting...
arr.filter((v) => {
let intValue = parseInt(v);
migratoryBirdsMap.set(intValue, migratoryBirdsMap.get(intValue)+1);
return v;
});
// 카운팅된 철새유형별 배열에 세팅
let result = [];
migratoryBirdsMap.forEach((v, k) => {
result = [...result, v]
});
// 1. 배열내 최대값찾기 (reduce)
// 2. 최대값을 기준으로 해당 index찾기 (findIndex : 가까운 index 찾아서 return)
return result.findIndex( (v)=>{
return v == result.reduce((a,b) => a > b ? a : b)
} ) + 1;
}
감사합니다. lol~😎
댓글 영역