상세 컨텐츠

본문 제목

[Easy] MigratoryBirds - javascript

Algorithm

by ChrisMare 2021. 7. 26. 14:43

본문

철새 [난이도-하]

모든 요소가 새 유형 ID를 나타내는 새 목격 배열이 주어지면 가장 자주 목격되는 유형의 ID를 결정하십시오. 1개 이상의 유형이 최대 금액만큼 발견되면 가장 작은 ID를 반환합니다.

 


arr = [1,1,2,2,3]

종류는 각각 2가지 유형 1, 유형 2 그리고 유형 3의 한 목격. 

두 번 본 두 가지 유형 중 더 낮은 유형 1을 선택하십시오.

기능 설명

아래 편집기에서 migratoryBirds 기능을 완료하십시오 .

migratoryBirds에는 다음 매개변수가 있습니다.

  • int arr[n] : 목격된 새의 종류

보고

  • int: 가장 자주 목격되는 새의 가장 낮은 유형 ID

입력 형식

  • 첫 번째 줄은 정수를 포함하고, n, 의 크기 arr.
    두 번째 줄은 다음을 설명합니다. arr NS n 공백으로 구분된 정수로, 각각 목격된 새의 유형 번호입니다.

제약

  • 5 ≤ n ≤ 2 × 100,000
  • 각 유형은 다음과 같습니다. 1, 2, 3, 4, 5

샘플 입력 0

6
1 4 4 4 5 3

샘플 출력 0

4

설명 0

다양한 유형의 새가 다음 ​​빈도로 발생합니다.

  • 유형 1: 1 
  • 유형 2: 0 조류
  • 유형 3: 1 
  • 유형 4: 3 조류
  • 유형 5: 1 

가장 높은 빈도에서 발생하는 유형 번호는 유형 4 입니다. 그래서 우리는 결과값으로 4 를 출력합니다.

 

샘플 입력 1

11
1 2 3 4 5 4 3 2 1 3 4

샘플 출력 1

3

설명 1

다양한 유형의 새가 다음 ​​빈도로 발생합니다.

  • 유형 1: 2
  • 유형 2: 2
  • 유형 3: 3
  • 유형 4: 3
  • 유형 5: 1

두 가지 유형의 빈도는 3, 그리고 그 중 낮은 유형은 3.

 

※ 출처 : 해커랭크-철새 [migratory-birds]

 

Migratory Birds | HackerRank

Determine which type of bird in a flock occurs at the highest frequency.

www.hackerrank.com

 


해답


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~😎

댓글 영역