본문 바로가기
알고리즘/c++ 프로그래머스

[프로그래머스] h-index c++ (문제,풀이,코드)

by 말린밴댕이_공부 2023. 5. 10.
반응형

문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/42747

 

프로그래머스

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

programmers.co.kr

 

문제

 

코드 및 풀이

정렬을 진행해준후에(내림차순!) 

반복문을 도는데 i < citations[i]라면 answer++하고 아니라면 break를 한다. 

이제 i >= citations[i]이기 때문에 갯수는 정해졌으니 return을 하면 됩니다.

 

/*
H-index

발표한 n평중 h번이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 h-index

문제의 예시 5편 발표 -> 3번이상 인용

일단 역순으로 sort(내림차순)
내림차순 된 인덱스와 값을 비교한다. i + 1 < v[i] -> i < v[i] 라면 그것이 바로 h-index

*/

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool compare(int a, int b){
    return a > b;
}

int solution(vector<int> citations) {
    int answer = 0;
   
    sort(citations.begin(),citations.end(), compare);
   
    for(int i =0; i < citations.size();i++){        
        //h번이상 인용된 논문이 h편 이상 / 나머지 h번 이하 인용되었다면 h의 최댓값
        if(i<citations[i]){
            answer++;
        }else
            break;
    }
   
    return answer;
}
반응형

댓글