반응형
문제
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.
어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.
나의 풀이
전체 길이만큼 for문을 돌리고, 정해진 조건에 맞는 것들의 갯수만 파악하면 된다.
function solution(citations) {
var answer = 0;
const len = citations.length;
for(let i = 1 ; i <= len; i++){
let tmp = citations.map((a,index)=> a >= i ? 1: 0).reduce((acc,cur)=> acc = acc + cur)
if (tmp >= i ){
answer = i
} else{
break
}
}
return answer;
}
다른이들의 풀이
방법1. while문 사용
function solution(citations) {
citations = citations.sort(sorting);
var i = 0;
while(i + 1 <= citations[i]){
i++;
}
return i;
function sorting(a, b){
return b - a;
}
}
방법2. sort를 통해 순차적 처리
function solution(citations) {
var answer = 0;
citations.sort((a, b) => b - a);
for(let i = 0; i < citations.length; i++) {
if(citations[i] > i) answer++;
else break;
}
return answer;
}
sort로 정렬할수 있는 조건인지 아닌지 확인하고 활용해보자!
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] level2. 땅따먹기 (javascirpt) (0) | 2021.05.03 |
---|---|
[프로그래머스] level2. 올바른 괄호 (javascript) (0) | 2021.05.03 |
[프로그래머스] level2. 기능 개발 (javascript) (0) | 2021.05.03 |
[프로그래머스] level1. 신규 아이디 추천 ( javasscript) (0) | 2021.05.01 |
[프로그래머스] level1. 하샤드 수 ( javascript) (0) | 2021.05.01 |