[프로그래머스] 42747 H-Index

최대 1 분 소요

프로그래머스 level2

문제


문제 풀이

import java.util.Arrays;
class Solution {
public static int solution(int[] citations) {
Arrays.sort(citations);
int result = 0;
for (int i = 0; i < citations.length; i++) {
int h = citations.length - i;
if (citations[i] >= h) {
result = h;
break;
}
}
return result;
}
}
view raw P_42747.java hosted with ❤ by GitHub


문제 리뷰

문제를 이해하기 쉽지 않았다.

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고
나머지 논문이 h번 이하 인용되었다면 h가 이 과학자의 H-Index입니다.

  • h번 이상 인용된 논문 > h편 (기존 논문 인용 횟수 이상을 만족하는 논문 개수)
  • 나머지 논문은 h번 이하 인용되어야 함.

우선 문제 카테고리가 정렬이니 내림차순으로 정렬을 해주었다.
그 후, 인용횟수에 따른 논문 개수를 세봤다.

0 1 3 5 6 (논문 인용 횟수)
5 4 3 2 1 (기준 논문 인용 횟수 이상을 만족하는 논문 개수)

위와 같은 규칙이 나타나는 것을 볼 수 있다.
그리고 대소 관계를 보기 위해 아래와 같이 나타내봤다.

0 < 5
1 < 4
++++++
3 >= 3
4 > 2
6 > 1

문제의 질문하기를 참고하니 문제의 설명이 부족하다고 한다.
설명을 더하자면 h의 최대값을 구하는 문제이다.

3, 4, 6이 h번 이상 인용된 논문이 h편 이상이라는 조건을 만족한다.
이 중에서 3이 h의 최대값을 가지기에 3이 답이 되는 것이다.
최대값을 구하는게 아니라면 3, 4, 6의 h 값 모두 조건을 만족한다.

TMI

3월은 열심히 하자..

1일 1알고리즘 완료🤓

댓글남기기