[프로그래머스 C++] H-Index
H-Index
https://school.programmers.co.kr/learn/courses/30/lessons/42747
해결방안
구현
처음 시도한 코드 - 테스트 케이스 1개 통과 못함
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
int h = 0; //h: H-Index
int n = citations.size(); //n: 발표한 논문의 수
sort(citations.begin(), citations.end());
for (int i = 0; i < n; i++)
{
int hHigh = n - i - 1; // i번째 논문 이상 인용이 된 논문 수
int hLow = i + 1; // i번째 논문 이하 인용이 된 논문 수
int paper = citations[i];
if (hHigh <= hLow) break;
if (hHigh >= paper && i<n-1) {
if(citations[i] < citations[i+1])
h = hHigh;
}
}
return h;
}
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> citations) {
int h = 0; //h: H-Index
int n = citations.size(); //n: 발표한 논문의 수
sort(citations.rbegin(), citations.rend());//높은값 순서로 정렬, 인용 횟수가 많은 논문부터 검사
for (int i = 0; i < n; i++)
{
//현재 논문의 인용 횟수가 현재까지 검사한 논문 수보다 많다면
if (citations[i] > i) //i번째 논문의 인용 횟수 > i번째 논문의 인용 횟수 이상의 논문들 수 i
h = i + 1; //H-index는 '인용된 횟수 이상'인 논문의 개수이므로, 여기서는 검사한 논문 수(i+1)을 새로운 H-index로 설정
else
break; // 현재 논문의 인용 횟수가 현재까지 검사한 논문 수와 같거나 작아진 경우, 반복을 종료
}
return h;
}
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] [1차] 캐시 (0) | 2023.09.11 |
---|---|
[프로그래머스 C++] 할인행사 (0) | 2023.09.10 |
[프로그래머스 C++] 괄호 회전하기 (0) | 2023.09.07 |
[프로그래머스 C++] 호텔 대실 (0) | 2023.09.06 |
[프로그래머스 C++] 연속 부분 수열 합의 개수 (0) | 2023.09.05 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] [1차] 캐시
[프로그래머스 C++] [1차] 캐시
2023.09.11 -
[프로그래머스 C++] 할인행사
[프로그래머스 C++] 할인행사
2023.09.10 -
[프로그래머스 C++] 괄호 회전하기
[프로그래머스 C++] 괄호 회전하기
2023.09.07 -
[프로그래머스 C++] 호텔 대실
[프로그래머스 C++] 호텔 대실
2023.09.06