728x90
📍 프로그래머스 2단계 - H-Index
정렬을 사용하여 푸는 문제인데, H-Index
라는 정의를 처음에 잘 이해하지 못했다. 여기저기 찾아보다 H-지수
가 무엇인지 알려주는 기사를 봤고, 해당 기사를 통해 구현해보니까 정답 판정을 맞았다. (기사 보러 가기) 기사에 작성된 핵심 내용을 토대로 만약, citations = [8, 4, 5, 10, 3]
이라고 가정한 후 로직을 작성하면 다음과 같다.
- 전체 논문 중 많이 인용된 순으로 정렬(내림차순 정렬)
- 인용 수(citation[i])와 논문 개수(idx)를 하나씩 비교해나가면서 인용수가 논문수와 같아지거나, 인용수가 논문수보다 작아지기 시작하는 숫자(논문 개수)가
h
가 된다. - 결론적으로, 인용 횟수 3번이 넘는 논문의 수가 적어도 4편이 된다는 것을 의미한다.
728x90
여기까지 작성하여 제출하면 7번 테스트케이스
가 실패로 처리되는데, edgeCase
를 고려하지 않았기 때문이다. 해당 edgeCase
는 반복문을 돌면서 인용수가 논문수와 같거나 작아지지 않는 경우가 있다. 예를 들면 citations = [ 23, 14, 10, 8, 7 ]
인 경우인데, 이럴 때는 반복문 안에서 인용수와 논문수를 비교할 때마다 answer += 1
을 해주는 방법이 있고 반복문을 돌고 난 이후에도 return
되지 않는다면 결국엔 citations.length
가 되기 때문에 return n
을 사용하는 방법도 있다.
function solution(citations) {
const n = citations.length;
let answer = 0;
citations.sort((a, b) => b - a);
for (let i = 0; i < n; i += 1) {
if (i >= citations[i]) {
answer = i;
return answer;
}
}
return n;
}
reference
반응형
'Algorithm > 프로그래머스(Programmers)' 카테고리의 다른 글
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 소수 찾기 (0) | 2022.04.04 |
---|---|
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 위장 (0) | 2022.03.29 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 구명보트 (0) | 2022.03.28 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level2 - 큰 수 만들기 (0) | 2022.03.25 |
[ 자바스크립트(JavaScript) ] 프로그래머스 level3 - 네트워크 (0) | 2022.03.23 |
댓글