[프로그래머스|JAVA] H-Index
2025. 6. 4. 17:05ㆍ💻코딩/💡Programmers
728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import java.util.*;
class Solution {
public int solution(int[] citations) {
Arrays.sort(citations);
int answer = 0;
int len = citations.length;
for(int i = 0; i < len; i++){
if(citations[i] >= len - i) { //나머지 논문(n-h)이 h번 이하 인용 중 최댓값
answer = len - i;
break;
}
}
return answer;
}
}
[접근법]
- 배열을 오름차순 정렬 후,
- 나머지 논문(n-h)이 h번 이하로 인용한 값 중 최댓 값을 찾아서 반환한다.
모든 문제가 그렇 듯 이해를 필요로 하는 문제였다.
하지만, 이해가 잘되지 않았다.
어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
⬆️ 특히, 위의 본문 말이 무슨 말인가 싶었다.
질문하기를 통해 다른 사람들이 댓글에 작성해준 또다른 케이스를 수집하여
생각해보고 시도해보니 이해가 되었다.
이 문제의 핵심은 나머지 논문이 h번 이하 인용 되었을 때 최댓값을 구하는 것이다.
n편 중 h번 이상 인용된 논문은 h편 이상이고
그렇다면 나머지 논문은 n-h편이 될 것이며, 이 나머지 논문이 h번 이하 인용되는 경우는
여러개이다. 그래서 최댓값을 찾으면 되는 것인데
이는 전체 논문 수에서 하나씩 줄여나가며
나머지 논문의 인용 수가 발표한 논문 편 수와 같거나 커질 때 해당되는 값으로 조건문에 사용하면 된다.
📌 말이 잘 이해되지 않을 때는 직접 그려가며 이해하면 더 잘되는 것 같다.
728x90
반응형
'💻코딩 > 💡Programmers' 카테고리의 다른 글
[프로그래머스|MySQL] SELECT | 조건에 부합하는 중고거래 댓글 조회하기 | DATE_FORMAT() | JOIN (0) | 2025.06.05 |
---|---|
[프로그래머스|JAVA] 행렬의 곱셈 | 그림 풀이 ⭕️ (1) | 2025.06.04 |
[프로그래머스|JAVA] n^2 배열 자르기 | 간단 코드 ⭕️ (2) | 2025.05.23 |
[프로그래머스|JAVA] 괄호 회전하기 | 스택 | 12, 13번 실패 | 해결법⭕️ (2) | 2025.05.21 |
[프로그래머스|JAVA] 할인 행사 | map 사용 ❌ 간단 코드 ⭕️ (1) | 2025.04.30 |