[고득점Kit][정렬] H-Index ⭐⭐
카테고리: Programmers
[정렬] H-Index
난이도 ⭐⭐
문제
내 풀이 ⭕
h-index
가citations
의 원소가 아닐 수 있다는 것에 유념해야 한다.- 처음엔 당연히
citations
의 원소이겠거니 했는데.. 항상 코테에서 ‘당연히’라는건 없고 ㅎㅎ 반례가 되는 케이스가 있는지 먼저 찾아보는 그런 습관을 들이는게 중요한 것 같다.- 예를 들어
citations
가 [100, 50]h-index
는 2 가 될 것이다.
- 예를 들어
- 👉 내림차순으로
citations
을 정렬하면citations[0]
에는 최대값이 자리하게 된다. 이citations
의 원소가 아닐 수 있으므로 인덱스를 감소시키는 것이 아닌,citations[0]
값부터 1 씩 감소하면서 h 번 이상 인용된 논문이 h 편 이상이 되는 논문을 찾아 내려간다.- 몇번 이상 인용됐는지를 논문을 두번째 for문으로 순회하며
count
로 센다. citations[0]
값부터 1 씩 감소시켜 내려왔던 그 값과count
가 일치하는 것을 찾으면 그것이 바로 h의 최대값이 된다.- 내림 차순 정렬이기 때문에!
- 몇번 이상 인용됐는지를 논문을 두번째 for문으로 순회하며
- 처음엔 당연히
#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;
}
}
}
}
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기