728x90

해당 문제를보고서 문제자체가 이해가 가질않아서 H-Index에 대해 찾아보았다.


즉, 피인용수 리스트 citations 를 내림차순으로 정렬한 후, 인덱스의 1더한 값과 리스트 요소를 비교해서
작아지기 인덱스값보다 인용수가 작아지기 직전의 시점에서의 위치가 H-지수가 된다는 것이다.
그래서 나는 코드를 아래와 같이 작성하였다.

테스트는 통과됐지만, 제출 시 통과되지 않아서 다른 사람의 풀이를 보았다.
그 중 아래 코드가 정말 간결했다.
fun solution(citations: IntArray): Int =
citations.sortedDescending().filterIndexed { index, i -> (index + 1) <= i }.lastIndex + 1
문제를 푼사람은 나와달리 인덱스중 가장 마지막 인덱스를 선택 후 1을 더해서 문제의 의도대로 풀었다.

참고 블로그
https://deep-dive-dev.tistory.com/70
[Kotlin] 프로그래머스 > 코딩테스트 연습 > 정렬 > H-index
문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과
deep-dive-dev.tistory.com
- 1.의도 및 이유: H-Index를 찾는것이 목표고 찾는 방법은 논문 횟수를 담은 citations 리스트를 내림차순으로 정렬후 각 요소의 인용 수를 정렬된 목록에서의 위치(인덱스+1)와 비교함.
- 2.코드 동작 로직: 내림차순으로 citations배열을 정렬하고 H-Index를 찾기위해 forEachIndexed함수를 사용하여 반복하면서 각 논문의 인용 수 value와 논문의 위치인 인덱스 idx를 비교한다. 이때, answer변수를 현재 인덱스의idx-1로 업데이트했다.
- 버그 또는 에러 및 해결: 문제에서 인덱스중 가장 마지막 인덱스를 선택하는 사항이 있었고 이부분을 캐치하지 못하여 제출을 통과하지 못했고, 다른사람의 코드를 참조하여 캐치하지 못한부분을 반영하여 제대로된 결과를 확인할 수 있었다.
728x90
'TIL > kotlin 알고리즘' 카테고리의 다른 글
| kotlin 프로그래머스 lv2 행렬의 곱셈 (0) | 2024.03.12 |
|---|---|
| kotlin 프로그래머스 lv2 n^2 배열 자르기 (0) | 2024.03.11 |
| kotlin 프로그래머스 lv2 연속 부분 수열 합의 개수 (0) | 2024.03.07 |
| kotlin 프로그래머스 lv2 괄호 회전하기 (1) | 2024.03.06 |
| kotlin 프로그래머스 lv2 귤 고르기 (0) | 2024.03.05 |