문제 설명

자료 구조

  • MAX_VALUE
    • 타입 : 정수
    • 저장 데이터 : 논문이 가장 많이 인용된 횟수
  • answer
    • 타입 : 정수
    • 저장 데이터 : H-Index를 담는 변수

풀이 과정

먼저 예시를 몇 가지 들어보겠다.

citations = [1,3,5,5,5,5]
4번 이상 인용된 논문이 4편 있으므로 H-Index는 4다.

citations = [1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5]
5번 이상 인용된 논문이 5편 이상 있으므로 H-index는 5다.
citations의 length가 굉장히 길지만 5까지만 보면 된다.

위 예시를 통해 몇 가지 사실을 알 수 있다.

  • citations의 요소가 아니어도 H-index가 될 수 있다.
    • for문을 돌려서 citations 요소가 아닌 Index도 조사해야 한다.
  • for문을 0부터 citations 요소의 최댓값까지만 조사하면 충분하다.
  1. 우선 citations의 최댓값 MAX_VALUE를 구한다.
    H-Index는 기본값으로 0을 선언한다.

  2. 0 ~ MAX_VALUE까지 for문을 돌린다.
    남아있는 배열의 길이가 i 이상이면 H-Index의 값으로 i를 준 다음, i 미만인 요소들을 전부 제거한다.

예시


i = 0일 때:
H-Index = 0
citations = [3, 2, 2, 2, 2, 2, 1]


i = 1일 때:
H-Index = 1
citations = [3, 2, 2, 2, 2, 2]


i = 2일 때:
H-Index = 2
citations = [3]


i = 3일 때:
H-Index = 2
citations = [3]

따라서 H-Index의 값은 2다.

이런 식으로 구현하면 해결된다.

코드 구현(JavaScript)

function solution(citations) {
  let MAX_VALUE = Math.max(...citations);
  let answer = 0;
  
  for (let i = 0; i <= MAX_VALUE; i++) {
    if (citations.length >= i) {
      answer = i;
      citations = citations.filter(v => v > i);
    }
  }
  return answer;
}

출처: 프로그래머스

profile
모르는 것 투성이

0개의 댓글

Powered by GraphCDN, the GraphQL CDN