-
[Javascript] 프로그래머스 H-index알고리즘, 자료구조/프로그래머스 2020. 6. 26. 15:02
문제
https://programmers.co.kr/learn/courses/30/lessons/42747
어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index이다. 그러니까 H-Index는 무조건 과학자가 발표한 논문 n편 이하의 숫자가 된다.
풀이방법
function solution(citations) { var answer = 0; citations.sort((a, b) => b - a); // 인용된 논문 개수를 기준으로 잡고 확인한다 -> 최소: 0, 최대: citations.length + 1 for(let i = 0; i < citations.length + 1; i++){ // h-index가 될 수 있는 값 let h = 0; // citation: 특정 논문이 인용된 횟수 citations.forEach(citation => { // 만약 이 논문이 인용된 횟수가 기준 i번 이상이라면 h++ if(citation >= i) h++; }) // h-index가 되기 위해서 i만큼 인용된 논문의 개수가 i 이상이어야 된다. // 이 기준에 부합한다면 answer에 i를 저장한다 if(h >= i){ answer = i; // 이 기준에 부합한다면 break로 탈출한다 }else{ break; } } return answer; }
테스트 케이스
[10, 9, 4, 1, 1] 3
[0, 1, 3, 5, 5, 5, 5, 5, 5, 6] 5
[0, 1, 1, 1, 1, 3, 3, 4] 3
[5, 5, 5, 0] 3
[9, 9, 8, 7] 4
[5, 5, 5, 5] 4
[5, 5, 5, 5, 5] 5
[2, 2, 2, 2, 2] 2
[0, 0, 0, 0] 0'알고리즘, 자료구조 > 프로그래머스' 카테고리의 다른 글
[Javascript] 프로그래머스 큰 수 만들기 (0) 2020.07.03 [Javascript] 프로그래머스 프린터 (0) 2020.06.30 [Javascript] 프로그래머스 카펫 (0) 2020.06.29 [Javascript] 프로그래머스 기능 개발 (2) 2020.06.26 [Javascript] 프로그래머스 소수 찾기 (0) 2020.06.23