알고리즘/c++ 프로그래머스
[프로그래머스] h-index c++ (문제,풀이,코드)
말린밴댕이_공부
2023. 5. 10. 14:38
반응형
문제링크
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;
}
반응형