문제
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]));
문제 이해가 어려운 문제였다.
위 링크가 문제 풀이에 꽤 많은 도움을 줘서 문제가 잘 이해되지 않는 사람들은 참고하면 좋을 것 같다.
논문 인용횟수를 내림차순으로 정렬하고 배열 길이만큼 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 |
댓글