[프로그래머스/ JavaScript] H-Index

룸잉·2023년 10월 3일
0

coding_test

목록 보기
3/5


📍 문제설명

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.

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

어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.

📍 제한사항

  • 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
  • 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.

📍 입출력 예시

citationsreturn
[3, 0, 6, 1, 5]3

🌐 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/42747


💻 작성 코드

function solution(citations) {
  let answer = 0;
  // 내림차순 정렬
  citations.sort((a, b) => b - a);

  for (let i = 0; i < citations.length; i++) {
    // 논문 수 < 인용된 논문 수일 경우에만 카운팅
    if (i < citations[i]) {
      answer++;
    }
  }

  return answer;
}

✏️ 구현 로직

  1. 논문 인용 횟수를 내림차순 정렬

  2. 논문 인용 횟수를 담은 배열 citations의 길이만큼 반복문 실행

    • citations[i] > i인 경우
      • `
  3. dfs 함수 호출

  4. 유저가 탐험할수 있는 최대 던전 수answer return


🔥 핵심 포인트

  • H-Index에 대한 어느정도의 이해 필요
    • 전체 논문을 많이 인용된 순(내림차순)으로 정렬
    • 피인용수(citations[i]) <= 논문 수(i)를 만족하기 시작하는 숫자가 H-Index

🌐 참고 링크

https://www.ibric.org/bric/trend/bio-series.do?mode=series_view&newsArticleNo=8802417&articleNo=8882714&beforeMode=latest_list#!/list

0개의 댓글