[프로그래머스/Level2/고득점키트] H-Index (C++)(Python)

ziwon.k·2021년 6월 24일
0
post-thumbnail

[프로그래머스/Level2/고득점키트] H-Index (C++)(Python)


2. 접근/체크포인트

  1. 6번 이상 인용된 논문 수는 1개
  2. 5번 이상 인용된 논문 수는 2개(최대가 6번이니까 5번 이상 인용된 논문은 2개가 됨)
  3. 3번이상 인용된 논문은 3개
  4. 1번이상 인용된 논문은 4개
  5. 이런식으로 i+1이 citations[i]과 작거나 같아지는 시점이 h의 최대값

3. 해결 방법

  1. 주어진 citations 벡터를 내림차순으로 정렬한다.
  2. 벡터 원소의 값과 i+1의 값을 비교하며 i+1이 citations[i]과 작거나 같아지는 시점을 찾는다.

4.전체코드

1. C++ 코드

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


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

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

    return answer;
}

2. Python 코드


def solution(citations):
    answer = 0
    
    # citations 배열 내림차순 정렬
    citations.sort(reverse=True)
    l = len(citations)
    
    for i in range (l):
        if citations[i] >= i+1:
            answer = i+1
    
    return answer
    

5. 참고사항

👉 C++ Vector의 정렬 방법

sort(v.begin(), v.end());  // 오름차순
sort(v.begin(), v.end(), less<>());  // 오름차순
sort(v.begin(), v.end(), greater<>());  // 내림차순

6.다른 방법으로 풀어보기

생략


7. 후기

규칙을 찾으면 금방 풀수 있는 문제,,,

profile
Frontend-Devloper

0개의 댓글