[lv2] H-Index

걸음걸음·2023년 2월 22일
0

Test

목록 보기
5/29

문제링크

  • H-Index는 과학자의 생산성과 영향력을 나타내는 지표
  • H-Index : 발표한 논문 n편 중 h번 이상 인용된 논문이 h번 이상일 경우 h의 최댓값
  • 논문 인용 횟수를 담은 배열 citations
  • 논문 중 h번 이상 인용된 논문이 h편이어야 함.
function solution(citations) {
    // 배열 내림차순으로 정렬
    // 정렬한 배열의 인덱스 값+1과 해당 배열의 값 비교
  	// 인덱스값+1 : h편
    // 해당 인덱스의 배열 값 : h번
    
    // citations을 내림차순으로 했을 때 인덱스 값 : h편
    // i+1(h편) array[i](h번)
    // i+1 <= array[i]
    // i+1 > array[i] 가 되는 순간 i값 return

    const length = citations.length;
    citations.sort((a,b)=>b-a) // 내림차순 정렬
    for(let i = 0; i<length; i++){
        if(i+1 > citations[i]){
            return i;
        }
    }
}
  • 9번 테스트 케이스에서 자꾸 실패
    배열의 최솟값(인용된 횟수)보다 배열의 길이(발표한 논문 수)가 더 작은 경우!
    ex) [12, 20] : 이 경우 h는 2가 되어야 함

최종 통과 답안

function solution(citations) {
    const length = citations.length;
    citations.sort((a,b)=>b-a)
    for(let i = 0; i<length; i++){
      	// 최솟값(정렬한 배열의 가장 마지막 값)이 길이보다 클 경우 길이 반환
        if(citations[length-1] > length) return length;
        if(i+1 > citations[i]){
            return i;
        }
    }
}

다른 사람의 풀이

// 필터를 사용한 방법
const solution = (citations) =>
  citations.sort((a, b) => b - a).filter((el, idx) => el >= idx + 1).length;
profile
꾸준히 나아가는 개발자입니다.

0개의 댓글