문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42747

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

참고 : https://en.wikipedia.org/wiki/H-index

 

 

 문제 설명 

 

N개의 숫자가 주어지는데  이숫자는 논문이 인용된 횟수이다 .

이 숫자들중 인용횟수가 H번 이상인 논문이 H개일때 H의 최대값을 H를 H-Index 라고 한다.

H-Index 를 return 하라 .

 

 알고리즘 

 

1. 먼저 입려된 벡터를 오름차순으로 정렬 (num 벡터로 지정).

2.num[0] 부터 num.size() 까지 for문을 돌림

3.num벡터에서 i 이상인것의 갯수를 센다음 갯수가 i 이상이면 return .

 

 

 코드 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<iostream>
#include <string>
#include <vector>
#include<algorithm>
using namespace std;
 
int solution(vector<int> citations) {
    vector<int> num = citations;
 
    sort(num.begin(), num.end(),greater<int>()); //오름차순 정렬
 
    int target = num[0];
 
    for (int i = num[0]; i > 0;i--) {
        int cnt = 0;
 
        for (int j = 0; j < num.size(); j++) {
            if (num[j] >= i) cnt++;
        }
 
        if (cnt >= i) return i;
 
 
    }
    
    
    
}
int main() {
    vector<int> a = { 3,0,6,1,5 };
    int result = solution(a);
    cout << result;
}
cs
 

 

 

ariz1623