[프로그래머스]H-Index(Level2)
📝문제 링크
🔑문제 KeyPoint
H-Index에 대한 설명만 잘 이해한다면, 문제는 쉽게 풀 수 있다.
우선, 문제 설명에 나온대로 오름차순 정렬을 이용하여 현재 index의 값과 배열의 남은 길이가 같으면 답이라고 생각하였다.
이렇게 풀면, H-Index를 잘못이해하고 푼 풀이이다.
H-지수(H-Index)란 무엇인가? 에 대한 내용을 보고 다시 이해하였다.
내림차순으로 정렬한 뒤,
피인용수 <= 논문을 인용한 수에 대한 조건만 세워주면 된다.
(단, 이렇게 접근하면 딱 한문제가 틀린다.)
💡 피인용수가 논문을 인용한 수와 같아질수 없는 경우,
피인용수 < 논문을 인용한 수가 작은 케이스만 체크해주면 된다.
💻문제 풀이
public int solution(int[] citations){
int answer = 0;
int len = citations.length;
int cnt = 0;
// 내림차순 정렬
Integer[] array = Arrays.stream( citations ).boxed().toArray( Integer[]::new );
Arrays.sort(array, Collections.reverseOrder());
for(int i=0;i<array.length;i++){
int h = array[i];
cnt ++;
// 위에서 말한 조건대로,
// 피인용수 <= 논문을 인용한 수
if(h <= cnt ){
answer = Math.max(i,answer);
break;
}else{
// 피인용수보다 논문수가 작은 경우
// ex) [5] => 1 || [22,42] => 2
if(i == len-1 && answer == 0 ){
answer = cnt;
}
}
}
return answer;
}
Author And Source
이 문제에 관하여([프로그래머스]H-Index(Level2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ming/프로그래머스H-IndexLevel2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)