https://school.programmers.co.kr/learn/courses/30/lessons/42747
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
같은 변수 h를 여러 곳에 사용하니까 문제를 이해하기 쉽지 않았다.
내림차순해서 하나씩 보면
6 5 3 1 0
1번째 논문을 보자 6번 이상 인용된 논문의 수는 1이다.
-> h번이상 인용된 논문의 수는 h이상 이라는 문장을 만족하는 h는 1이다.
2번째 논문을 보자 5번 이상 인용된 논문의 수는 2이다.
-> h번이상 인용된 논문의 수는 h이상 이라는 문장을 만족하는 h는 2이다.
3번째 논문을 보자 3번 이상 인용된 논문의 수는 3이다.
-> h번이상 인용된 논문의 수는 h이상 이라는 문장을 만족하는 h는 3이다.
4번째 논문을 보자 1번 이상 인용된 논문의 수는 4이다.
-> h번이상 인용된 논문의 수는 h이상 이라는 문장을 만족하는 h는 1이다.
5번째 논문을 보자 0번 이상 인용된 논문의 수는 5이다.
-> h번이상 인용된 논문의 수는 h이상 이라는 문장을 만족하는 h는 0이다.
논문의 수를 하나씩 증가하는 식으로 보면 최댓값을 쉽게 찾을 수 있다.
인용된 수는 점점 감소할테고 만족하는 논문의 수는 증가한다.
그 사이에서 현재까지 세고 있는 논문의 수 이상 인용되었는가?를 보면된다.
그래서 그 크기가 전환되는 지점이 최대가 된다는 것을 알 수 있다.
import java.util.*;
class Solution {
//6 5 3 1 0
public int solution(int[] citations) {
Arrays.sort(citations);
int len = citations.length;
int h = 0;
for(int i=len-1; i>=0; i--) {
int citationCnt = citations[i]; //논문의 인용된 수
int paperCnt = len - i; //현재까지 카운트하고 있는 논문의 수
if(citationCnt >= paperCnt) {
//현재까지 본 paperCnt편의 논문이 모두 paperCnt번 이상 인용되었는가?
h = paperCnt;
} else {
break;
}
}
return h;
}
}

'알고리즘 & 자료구조 > 문제 풀이' 카테고리의 다른 글
| [프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 올바른 괄호 (0) | 2026.05.24 |
|---|---|
| [프로그래머스 알고리즘 고득점 Kit][동적계획법(Dynamic Programming)][Java] 도둑질 (0) | 2026.05.24 |
| [프로그래머스 알고리즘 고득점 Kit][동적계획법(Dynamic Programming)][Java] 사칙연산 (0) | 2026.05.08 |
| [프로그래머스 알고리즘 고득점 Kit][그리디][Java] 체육복 (0) | 2026.04.30 |
| [프로그래머스 알고리즘 고득점 Kit][정렬][Java] 가장 큰 수 (0) | 2026.04.28 |