Algorithm

[Algorithm] 백준 13333 Q-인덱스 풀이

용성군 2021. 9. 22. 16:45
728x90
반응형

문제 설명

문제를 이해하는데 조금 걸렸다.

k번 이상 인용된 논문이 k편 이상이고 나머지 n − k 편의 논문들 인용회수가 각각 k 번 이하라면, 해당 학생의 q-인덱스는 k이다.

위의 말은 논문 인용 횟수를 오름차순으로 정렬하고(밑의 코드의 vector<int> v), k가 인용횟수의 어느 위치에 있는지 찾아준다(내부 for문). 이 부분은 k를 기준으로 인용횟수의 왼쪽과 오른쪽이 나누어서 조건을 파악하기 위해서이다. 이부분을 만족하는 최대의 k값을 구한다.

 

 


코드

#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    
    int n;
    scanf("%d", &n);
    vector<int> v;
    v.resize(n);
    
    for(int i = 0; i < n ; i++)
    {
        scanf("%d",&v[i]);
    }
    
    sort(v.begin(),v.end());

    int max = -1;
    for(int k = 0; k <= n; k++)
    {
        for(int i = 0; i < n; i++)
        {
            if(v[i] >= k && k <= n-i && n-k <= i+1)
            {
            	//k가 vector에서 어디에 위치하는지 찾은 후
                //i의 왼쪽과 오른쪽의 개수가 만족하면 max값을 바꿔준다.
                max = k;
            }
        }
    }
    
    printf("%d\n",max);
    
}
728x90
반응형