-
728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42747
제한 사항
- 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
- 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.
입출력 예
citations return [3, 0, 6, 1, 5] 3 이 과학자가 발표한 논문의 수는 5편이고, 그중 3편의 논문은 3회 이상 인용되었습니다. 그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에 이 과학자의 H-Index는 3입니다.
문제 풀이
function solution(citations) { // 논문을 인용 횟수에 따라 내림차순으로 정렬 citations.sort((a, b) => b - a) // H-Index 찾기. 배열에 각 논문의 인용 횟수와 인덱스를 비교해서 인덱스보다 크거나 같은 값이 H-Index for(let i = 0; i < citations.length; i++) { if(citations[i] < i + 1) { return i; } } return citations.length }
사실 문제 지문을 여러번 봤는데 이게 대체 무슨말인가... 했었다.
질문하기 보면 나만 이해 못한 것 같진 않아서 설명이 다소 이상하다고 생각하고 다른 사람의 코드를 보면서 이해했다.
이해한대로 설명해보자면, citations는 논문의 인용횟수를 나타낸 배열
논문 중 h번 이상 인용된 논문이 h편 이상. 나머지 논문은 h편 이하로 인용되어야 하며 h의 최댓값이 H-Index가 된다.
1. h의 최댓값을 찾기 위해 인용 횟수를 내림차순으로 정렬하기 (ex. [3, 0, 6, 1, 5] => [6, 5, 3, 1, 0])
2. 배열에서 각 인덱스를 기준으로, 해당 인덱스의 값이 인덱스보다 크거나 같으면 그게 H-Index가 된다.
(인덱스 0부터 순회 시작 => 6은 인덱스 1보다 크거나 같음. 5는 인덱스 2보다 크거나 같음. 3은 인덱스 3보다 작음 => 그럼 이제까지 후보중에 가장 큰 값이 H-Index가 되며 나머지 값들은 자신의 인덱스보다 작기 때문에 인덱스 2인 '3'이 H-Index가 된다!)
'코딩테스트, 알고리즘' 카테고리의 다른 글
[프로그래머스] 타겟 넘버 (JS) (0) 2023.11.29 그래프 알고리즘, 깊이/너비 우선 탐색(DFS/BFS) (0) 2023.11.28 연속 부분 최대합으로 알아보는 완전탐색과 시간복잡도 (1) 2023.11.26 동전 거스름돈으로 알아보는 탐욕 알고리즘 (Greedy Algorithm) (0) 2023.11.17 피보나치 수열로 알아보는 동적계획법(Dynamic Programming) (1) 2023.11.16 댓글