#include <string>
#include <vector>
#include <functional>
using namespace std;
int solution(vector<int> citations) {
sort(citations.begin(), citations.end(), greater<>());
int answer = 0;
for(int i = 0; i < citations.size(); i++) {
if(i+1 <= citations[i]) answer = i + 1;
}
return answer;
}
문제는 발표한 논문 N개가 있을 때 그 중 K번 인용된게 K개 있는 최대 K값을 찾는 문제입니다.
간단하게 인용된 횟수를 내림차순(높은게 앞으로) 정렬하고 Index와 논문의 인용수가 같거나 인용수가 작으면 정답 값으로 넣습니다.
ex: 10 8 6 4 ... 이라면 10번 인용된 것은 1개 8번 인용된 것은 최소 2개 6번 인용된 것은 최소 3개이므로 n번 인용된 논문이 최소 n개인 순간을 찾을 수 있습니다.
고로 높은 순으로 정렬하고 보면 조건을 충족하는 논문을 찾을 수 있습니다.
생각해보니 바로 충족하는 순간을 찾았을 때 return 해도 될 것 같아서 테스트하려고 했으나 이미 다른 사람들의 풀이를 보니 그렇게 푼 사람이 있어서 따로 시도해보지는 않았습니다.
문제: https://programmers.co.kr/learn/courses/30/lessons/42747#
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스/C++] 콜라츠 추측 (0) | 2022.01.28 |
---|---|
[프로그래머스/C++] 체육복 (0) | 2022.01.28 |
[프로그래머스/C++] 가장 큰 수 (0) | 2022.01.28 |
[프로그래머스/C++] 큰 수 만들기 (0) | 2022.01.20 |
[프로그래머스/C++] JadenCase 문자열 만들기 (0) | 2022.01.17 |