문제 이해하기)
배열 안의 각 요소를 elem이라고 할 때 elem은 각 논문의 인용 횟수를 말하는데,
elem이 h보다 작거나 같을 때는 elem값을,
elem이 h보다 클 때는 h값을 h-index값으로 넣어야 한다.
이렇게 각 논문 마다의 h-index 값을 구한 뒤, 이 h-index값들 중 가장 큰 값을 최종 h-index값으로 반환해야 함.
(문제에서 "나머지 논문이 h번 이하 인용"이 말은 h값이 될 수 있는 수중 가장 작은 수가 h가 되고,
이렇게 결정 된 h들 중에서 최댓값이 되어야 한다는 뜻이다. )
위의 예제를 예로들면
citations = [3,0,6,1,5];
//elem === 3 이면 h는 3,6,5로 3 elem === h 즉 3을 반환
//elem === 0 이면 h는 0,1,3,5,6으로 5지만, elem과h 중 더 작은 값을 반환해야 하므로 0반환
//elem === 6, h 는 6으로 1 이므로 h값 1 반환
//elem === 1, h는 1,3,5,6으로 4. elem값 1반환
//elem === 5, h는 5,6으로 2. h값 2반환
//이렇게 h-index 는 3,0,1,1,2가 되는데, 이 중 가장 큰 3값이 최종 h-index값이 된다.
//추가로,
citations = [5,5,5,5];// 인 경우엔 최종 h-index값이 4
내 통과 코드
function solution(arr) {
let answer = 0;
let h = [];
let cnt = 0;
for(let elem of arr){
arr.forEach((v) =>{
v >= elem ? cnt+=1 : cnt += 0;
});
if(elem <= cnt) h.push(elem);
else{h.push(cnt)}
cnt = 0;
}
h.sort((a,b) => {return b-a;});
return answer = h[0], answer;
}
좋아요 가장 많았던 코드
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;
}
}
'Web > Algorithm' 카테고리의 다른 글
2019 카카오 개발자 겨울 인턴십) 크레인 인형뽑기 게임 (0) | 2020.12.04 |
---|---|
[프로그래머스 > 해시] 베스트 앨범 (0) | 2020.06.23 |
[ 프로그래머스 > 해시] 위장 (0) | 2020.04.23 |
[ 프로그래머스 > 해시] 완주하지 못한 선수 (0) | 2020.04.23 |
비트 카운팅 알고리즘 (0) | 2020.02.01 |