https://school.programmers.co.kr/learn/courses/30/lessons/42747#
이 문제는 배열을 탐색하면 해결할 수 있다.
h-index의 조건은 h의 값이 h번 인용된 논문 수가 h 이상이거나 인용된 나머지 논문 수가 h이하인 경우의 최대 h값을 찾으면 된다.
가능한 h 값의 최대 수는 배열에 저장된 논문 수가 된다. 그 이상은 샐 수 없기 때문
따라서 가능한 h값부터 1씩 감소시켜 조건에따라 비교한다.
이때 조건은 배열의 요소가 h값 이상인 경우 count를 증가시킨다.
그러면 현재 배열에 존재하는 h 이상의 인용된 논문수가 나온다.
반복을 빠져나온 후 counter가 h이상인 경우 h값을 반환한다.
이때 h 값은 항상 인용된 나머지 논문 수는 h 이하가 된다.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(vector<int> citations) {
int answer = 0;
// 0 1 3 5 6
// 5 - 1
for(int h = citations.size();h>=0;h--){
int counter = 0;
for(int c = 0;c<citations.size();c++){
if(citations[c] >= h) counter++;
}
if(counter >= h)
return h;
}
return 0;
}
'Programmers Review' 카테고리의 다른 글
[Lv 2] 프로세스 (0) | 2024.06.28 |
---|---|
[Lv 2] 더 맵게 (0) | 2024.06.28 |
[Lv 2] 카펫 (0) | 2024.06.28 |
[Lv 2] 숫자 블록 (0) | 2024.06.27 |
[Lv 2] 땅따먹기 (0) | 2024.06.24 |