본문 바로가기
코테연습

163. H-Index Javascript

by hxunz 2022. 9. 20.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제에 대한 이해

  • 우리가 풀어야 할 문제는 무엇인가?
     - 과학자의 H-Index를 return
  • 주어진 자료는 무엇인가?
     - 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations
     - 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index
  • 조건은 무엇인가?
     - 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하
     - 논문별 인용 횟수는 0회 이상 10,000회 이하

2. 계획

  1. citations 배열을 뒤에서부터 순회하면서 i번 이상 인용된 논문의 개수가 i이상이라면 i return

3. 실행

  • 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (citations) => {
  // citations 배열을 뒤에서부터 순회하면서 i번 이상 인용된 논문의 개수가 i이상이라면 i return

  for (i = citations.length; i >= 0; i--) {
    const countDocs = citations.filter((it) => it >= i).length;

    if (countDocs >= i) {
      return i
    }
  }
};

test('findHIndex', () => {
  expect(solution([3, 0, 6, 1, 5])).toEqual(3);
  expect(solution([1, 2, 3])).toEqual(2);
  expect(solution([6, 5, 5, 5, 3, 2, 1, 0])).toEqual(4);
  expect(solution([10, 10, 10, 10, 10])).toEqual(5);
  expect(solution([0, 0, 0, 0, 0])).toEqual(0);
  expect(solution([3, 4, 5, 11, 15, 16, 17, 18, 19, 20])).toEqual(7);
  expect(solution([3, 0, 6, 1, 5])).toEqual(3);
  expect(solution([0, 0, 0, 0, 1])).toEqual(1);
  expect(solution([9, 7, 6, 2, 1])).toEqual(3);
  expect(solution([1, 1, 5, 7, 6])).toEqual(3);
  expect(solution([0])).toEqual(0);
  expect(solution([0, 0])).toEqual(0);
  expect(solution([0, 1, 2, 3, 3, 3, 3, 3, 3, 4, 10, 20, 30, 40])).toEqual(4);
  expect(solution([3, 1, 1, 4])).toEqual(2);
  expect(solution([1, 1, 5, 7, 6])).toEqual(3);
  expect(solution([1, 3, 5, 7, 9, 11])).toEqual(4);
  expect(solution([6, 5, 4, 1, 0])).toEqual(3);
  expect(solution([10, 11, 12, 13])).toEqual(4);
});

 

 

 

'코테연습' 카테고리의 다른 글

165. 튜플 Javascript  (1) 2022.09.21
164. 괄호 회전하기 Javascript  (0) 2022.09.21
162. 행렬의 곱셈 Javascript  (0) 2022.09.19
161. 파괴되지 않은 건물 Javascript  (0) 2022.09.19
160. 주차 요금 계산 Javascript  (0) 2022.09.19

댓글