[프로그래머스]H-Index (JS)

전체코드

function solution(citations) {
       let answer = citations.length;
        citations.sort((a, b) => b - a);

        for (let i = 0; i < citations.length; i++) {
          if (citations[i] < i + 1) {
            answer = i;
            break;
          }
        }
        return answer;
}

문제풀이

1. answer을 발표한 논문의 수로 지정하고 citations를 오름차순으로 정리한다.

       let answer = citations.length;
        citations.sort((a, b) => b - a);
  • 발표한 논문의 수(citations.length)를 answer의 값으로 정한다.
  • 논문별 인용 횟수와 발표한 논문의 수를 비교하기 위해 citations를 논문별 인용 횟수가 가장 큰 순(올림차순)으로 정리한다.

2. for문을 사용하여 비교한다.

        for (let i = 0; i < citations.length; i++) {
          if (citations[i] < i + 1) {
            answer = i;
            break;
          }
        }
        
         return answer;
  • for문을 사용하여 논문별 인용 횟수(citations[i])와 해당 인용 횟수의 순위(i + 1)를 비교하고 순위보다 인용 횟수가 작다면 해당 인용 횟수의 전 순위(i)가 이 과학자의 H-Index 값(answer=i)이다.
  • 값을 구했다면 for문을 멈추고 값을 return한다.

여담


문제에 나온 H-Index의 개념이 이해가 안되 여러번 읽어보고 구글로도 찾아보고 풀었다. 개념이 이해되니 코드는 생각보다 빨리 나온 문제!

좋은 웹페이지 즐겨찾기