[ALGORITHM NINJA] 정렬 3번 H-index
내 코드
function solution(citations) {
var answer = 0;
citations.sort((a, b) => {
return b - a;
});
for (let H_index = citations.length; H_index >= 0; H_index--) {
if (citations[H_index - 1] >= H_index) {
answer = H_index;
break;
}
}
return answer;
}
-
전체로직설명 : 우선 출간한 논문들의 인용횟수가 배열에 담겨서 들어온다.
-
배열을 역으로 소팅한다. ( 내림차순 )
-
배열의 방 갯수가 최대 H-index
값이므로 최대 H-index
부터 하나씩 값을 줄이며 만족하는 지 체크한다.
function solution(citations) {
var answer = 0;
citations.sort((a, b) => {
return b - a;
});
for (let H_index = citations.length; H_index >= 0; H_index--) {
if (citations[H_index - 1] >= H_index) {
answer = H_index;
break;
}
}
return answer;
}
전체로직설명 : 우선 출간한 논문들의 인용횟수가 배열에 담겨서 들어온다.
배열을 역으로 소팅한다. ( 내림차순 )
배열의 방 갯수가 최대 H-index
값이므로 최대 H-index
부터 하나씩 값을 줄이며 만족하는 지 체크한다.
H-index의 조건은 어떤수 n 이상의 방이 n개 이상있고, 나머지는 모두 n이하이면 (이 조건을 만족하는 수중 최댓값이라는 가정하에) H-index는 n이다..
ex) [5,5,5,5,5] => 5
ex) [5,5,5,5,4] => 4
ex) [3,0,6,1,5] => 3
- [3,0,6,1,5]를 손 계산 해보았다.
다른 사람 코드
while(i + 1 <= citations[i]){
i++;
}
while(i + 1 <= citations[i]){
i++;
}
나와 같은 로직의 코드를 다음과 같이 줄일 수 있다.
citations
는 역소팅 되어있는 상황이고 i
값을 늘리면서 체크
- H-index 1일 때 0번방이 1이상인지 확인 (1이상이 최소 1개이므로 H-index 성립)
- 2일때 1번방이 2이상인지를 확인 (2이상이 최소 2개이므로 H-index 성립)
- 3일때 2번방이 3이상인지를 확인 (3이상이 최소 세개이므로 H-index 성립)
...
Reference
Author And Source
이 문제에 관하여([ALGORITHM NINJA] 정렬 3번 H-index), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rat8397/ALGORITHM-NINJA-정렬-2번-가장-큰-수-8drws5rj저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)