본문 바로가기

c언어 스터디/HackerRank

[HackerRank] Migratory Birds

Migratory Birds | HackerRank

 

Migratory Birds | HackerRank

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

www.hackerrank.com

 

<문제>

input: 첫번째 줄에는 arr배열의 크기가 입력된다. 그 크기는 관측된 새의 수이다.

두번째 줄에는 장소에서 보인 새의 종류가 배열로 입력받는다.

 

output: 가장 많이 발견된 새의 종류를 리턴한다. 그리고 발견된 새의 수가 동일한 경우, 더 수가 작은 id를 리턴한다.

 

 

<코드>

int migratoryBirds(int arr_count, int* arr) {
    int counter[6] = {0}, result = 0, max = 0;

    for (int i = 0; i < arr_count; ++i) {
        int id = arr[i];

        counter[id]++;

        if (counter[id] > max) {
            max = counter[id];
            result = id;
        } 
        else if (counter[id] == max) {
            result = fmin(result, id);
        }
    }

    return result;
}

 

<풀이>

장소의 id별로 새의 수를 저장하기 위해 배열 counter[6]을 선언하고, id 별로 배열에 저장한다. 

그리고 max변수와 비교하여 만약 counter[id]의 값이 원래 저장되어있던 max보다 크면 값을 바꾸고, 만약 같으면 result와 id 값 중 더 작은 것을 result로 저장하고 result를 리턴하여 문제를 풀 수 있었다.

 

<실행결과>

 

 

'c언어 스터디 > HackerRank' 카테고리의 다른 글

[HackerRank] Reverse a linked list  (0) 2021.07.22
[HackerRank] Delete a Node  (0) 2021.07.18
[HackerRank] Minimum Distances  (0) 2021.07.10
[HackerRank] Bill Division  (0) 2021.07.10
[HackerRank] Tree- Binaery Search Tree: Insertion  (0) 2021.06.25