728x90
반응형
정렬 문제보다는 국어 문제다.
📜 문제 내용
🤔 과정
- 논문 인용수를 기반으로 한 H-Index가 실제로 어떤 방법으로 도출이 되는 지 알기 때문에 풀기 쉬웠다.
- H-Index 구하는 과정을 코드로 변경하면서 단위에 집중했다. "편", "번" 단위에 모두 관련되어 있는 지표이므로, "몇 번"보다는 "몇 편"이 직관적으로 배열의 원소 수라고 다가왔다.
- 그래서 오름차순으로 정렬된 citations 배열을 순회하면서 (현재 인덱스에 해당하는 인용수, "번")가 최초로 (그 인용수 이상으로 인용된 논문 수, "편") 보다 크거나 같을 때, return 시킨다.
예시 1) H-Index = 3
인용수(오름차순) | 0 회 | 1 회 | 3 회 | 5 회 | 6 회 |
위의 논문 인용수 이상 인용된 논문 수 | 5 편 | 4 편 | 3 편 | 2 편 | 1 편 |
예시 2) H-Index = 4
인용수(오름차순) | 5 회 | 6 회 | 7 회 | 8 회 |
위의 논문 인용수 이상 인용된 논문 수 | 4 편 | 3 편 | 2 편 | 1 편 |
✨ 최초 제출 답안
import java.util.*;
class Solution {
public int solution(int[] citations) {
// 오름차순 정렬
Arrays.sort(citations);
int arrLen = citations.length;
// 논문 인용수 배열 길이만큼 반복
for(int i = 0; i < arrLen; i++){
// 현재 인용수보다 큰 인용수를 가진 논문 수
int h = arrLen - i;
// 현재 인용수가 크면 H-Index 반환
if(citations[i] >= h){
return h;
}
}
// 모두 순회했는데 반환되지 않았다면
// H-Index가 0
return 0;
}
}
- 정렬 분류에 있는 문제임에도, 정렬 방법에 대한 고민에 대해 시간을 쏟는 문제가 아니었다. 그래서 차라리 이런 문제 푸는 데 시간을 쓰는 것보다, 다른 자료구조, 알고리즘에 대해 공부하는 것이 더 나을 것 같다.
🔗 문제 링크
728x90
반응형