Programmers - H-Index

이준희·2022년 7월 8일

Algorithm

목록 보기
4/16

문제 설명이 약간 불친절한 문제였다.
쉽게 말해서, n편의 논문중에, 1번 이상 인용된 논문이 1번 이상이면 1은 H-Index가 될 자격이 있다는 것이고,
그 H-Index가 될 자격을 갖춘 것들 중의 최댓값을 찾아달라는 문제였다.

문제 자체는 쉬운 편에 속해서 로직을 짜는데도 시간이 얼마 걸리지 않았다.

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

using namespace std;

bool compare(int a, int b){
    return a > b;
}
int calc(vector<int> citations, int num){		// num 회 이상 인용된 논문이 몇 건인지 구해주는 함수이다.
    int count = 0;
    for(int i = 0;i < citations.size();i++){
        if(citations[i] < num) break;
        count++;
    }
    return count;
}

int solution(vector<int> citations) {
    int answer = 0;
    vector<int> list(citations.size());
    sort(citations.begin(), citations.end(), compare);
    for(int i = 0; i < list.size(); i++){
        list[i] = calc(citations, i + 1);	  	// list에 각 횟수별 인용된 논문의 개수를 저장해주었다.
    }
    for(int i = 0; i < list.size(); i++){		
        if(list[i] >= i + 1) answer = i + 1;	// h가 될 수 있는 것들 중에 최댓값을 뽑아주었다.
    }
    return answer;
}
profile
뉴비 개발자입니다!!

0개의 댓글