728x90
문제
코딩테스트 연습 - H-Index
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표
programmers.co.kr
TRY
function solution(citations) {
citations.sort((a, b) => b - a);
let answers = 0;
for (let i = 0; i < citations.length; i++) {
if (i < citations[i]) {
answers++;
}
}
return answers;
}
console.log(solution([47, 42, 32, 28, 24, 22, 17, 15, 10, 10, 8]));
console.log(solution([3, 0, 6, 1, 5]));
문제 이해가 어려운 문제였다.
[연구논문을 위한 핵심 10단계] H-지수(H-Index) 란 무엇인가?
일반적으로 특정 연구원의 연구성과를 평가하기 위해 얼마나 많은 논문을 발표 하였는지를 보게됩니다. 그러나 단순히 발표한 논문 수로만 그 연구원의 연구 업적을 평가 하기에는 발표한 논문
www.ibric.org
위 링크가 문제 풀이에 꽤 많은 도움을 줘서 문제가 잘 이해되지 않는 사람들은 참고하면 좋을 것 같다.
논문 인용횟수를 내림차순으로 정렬하고 배열 길이만큼 for문을 돌린다.
자신의 인용횟수(cittations[i])가 자신보다 인용횟수가 많은 논문 수(i) 보다 많으면 정답 수를 1 증가시킨다.
자신의 인용횟수가 자신보다 인용횟수가 많은 논문 수와 같아 질때 의 answer를 return하면 정답이다.
Refactoring
function solution(citations) {
citations = citations.sort((a, b) => b - a);
let i = 0;
while (i + 1 <= citations[i]) {
i++;
}
return i;
}
console.log(solution([47, 42, 32, 28, 24, 22, 17, 15, 10, 10, 8]));
console.log(solution([3, 0, 6, 1, 5]));
같은 방식이지만 while문을 이용해서 구하면
for문처럼 논문 수 전체를 돌지 않고 H-index가 나오는 시점에 반복문이 멈추기 때문에
더 효과적인 방법이라고 생각한다.
'ALGORITHM > 프로그래머스 With JS' 카테고리의 다른 글
[프로그래머스] 가장 큰 수 / Javascript (0) | 2021.05.02 |
---|---|
[프로그래머스] 프린터 / Javascript (0) | 2021.05.01 |
[프로그래머스] 기능개발 / Javascript (0) | 2021.04.30 |
[프로그래머스] 다리를 지나는 트럭 / Javascript (0) | 2021.04.29 |
[프로그래머스] 위장 / Javascript (0) | 2021.04.29 |
댓글