프로그래머스 42747 - H-Index
생각과 접근
// 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고,
// 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
- 일단 위 H-Index에 대해 잘 이해해야 했고, 어떤 방식으로 탐색하면 효율적인지 생각했다.
- h번 이상 인용된 논문이 h편 이상 에 주목하여,
- h를 어떻게 찾을까. h번 이상 인용된 논문 의 h 를 찾기보단 h편 이상 의 h 를 찾는 것에 중점을 두었다. 전자를 찾으려면 탐색 류의 알고리즘을 사용해야 될 것 같은데, 그러기엔 너무 까다롭게 접근하는 듯 했다. 후자를 찾으려면 인용 횟수가 많은 논문부터 탐색하면 쉽게 찾을 수 있을 것 같았다.
- 문제에서 주어지는
citations
를 내림차순으로 정렬하여 인용 횟수가 많은 논문부터 탐색하기로 하였다.
- 인용 횟수가 많은 논문을 탐색하면서, answer를 하나씩 늘려간다. 그러다 answer보다 더 낮은 인용 횟수를 가진 논문이 나오면, 그 answer를 반환하면 된다.
코드
#include <bits/stdc++.h>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
sort(citations.rbegin(), citations.rend());
for(auto c : citations){
if(answer + 1 > c) break;
answer++;
}
return answer;
}
채점 결과
'Coding Test > programmers' 카테고리의 다른 글
프로그래머스 43162 - 네트워크 (c++) (0) | 2020.07.29 |
---|---|
프로그래머스 43165 - 타겟 넘버 (c++) (0) | 2020.07.29 |
프로그래머스 42746 - 가장 큰 수 (c++) (0) | 2020.07.29 |
프로그래머스 42748 - K번째수 (c++) (0) | 2020.07.29 |
프로그래머스 42587 - 프린터 (c++) (0) | 2020.07.28 |