[고득점Kit][정렬] H-Index ⭐⭐

Date:     Updated:

카테고리:

태그:

[정렬] H-Index

난이도 ⭐⭐

문제

image


내 풀이 ⭕

  • h-indexcitations의 원소가 아닐 수 있다는 것에 유념해야 한다.
    • 처음엔 당연히 citations의 원소이겠거니 했는데.. 항상 코테에서 ‘당연히’라는건 없고 ㅎㅎ 반례가 되는 케이스가 있는지 먼저 찾아보는 그런 습관을 들이는게 중요한 것 같다.
      • 예를 들어 citations가 [100, 50] h-index는 2 가 될 것이다.
    • 👉 내림차순으로 citations을 정렬하면 citations[0]에는 최대값이 자리하게 된다. 이 citations의 원소가 아닐 수 있으므로 인덱스를 감소시키는 것이 아닌, citations[0]값부터 1 씩 감소하면서 h 번 이상 인용된 논문이 h 편 이상이 되는 논문을 찾아 내려간다.
      • 몇번 이상 인용됐는지를 논문을 두번째 for문으로 순회하며 count로 센다.
      • citations[0]값부터 1 씩 감소시켜 내려왔던 그 값과 count가 일치하는 것을 찾으면 그것이 바로 h의 최대값이 된다.
        • 내림 차순 정렬이기 때문에!
#include <string>
#include <vector>
#include <algorithm>
#include <functional>

using namespace std;

int solution(vector<int> citations) {

    sort(citations.begin(), citations.end(), greater<int>()); // 내림차순 정렬
    
    for(int i = citations[0]; i > 0; i--)
    {
        int count = 0;
        for(auto & elem : citations)
        {
            if (elem >= i)
            {
                count++;
                if (i == count)
                    return count;
            }
        }
    }
}


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Programmers 카테고리 내 다른 글 보러가기

댓글 남기기