[프로그래머스/C++]Lv.2 - H-Index

YH J·2023년 9월 18일
0

프로그래머스

목록 보기
142/168

문제 링크

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

내 풀이

가장 높은 원소부터 검사해나간다. h이상인 원소의 개수가 h개 이상이면 바로 h를 리턴한다.

내 코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<int> citations) {
    int answer = 0;
    
    int h = *max_element(citations.begin(), citations.end());
    int hup = 0;
    
    for(h; h >= 0; h--)
    {
        for(int c : citations)
        {
            if(c >= h)
                hup++;
            if(hup >= h)
                return h;
        }
        hup = 0;
    }    
    return answer;
}

다른 사람의 풀이

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

using namespace std;

int solution(vector<int> citations) {
    sort(citations.begin(), citations.end(), greater<int>());

    for (int i = 0; i < citations.size(); ++i) {
        if (citations[i] < i + 1) {
            return i;
        }
    }

    return citations.size();
}

다른 사람의 풀이 해석

citations를 내림차순으로 정렬한다.
가장 큰 값부터 검사하는데 h 가 i가된다.
citations[i] < i + 1이 되는순간 == h번 이상 인용한 횟수가 h편 이상이 되는 순간
바로 h를 리턴해준다.
모든 인용 횟수가 1000 이상인 경우 citations의 size를 리턴한다.

profile
게임 개발자 지망생

0개의 댓글