H-Index

출처 = 프로그래머스

문제

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고
나머지 논문이 h번 이하 인용되었다면 h의 최댓값을 H-Index라고 할 때
어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때,
이 과학자의 H-Index를 구하라.

고민

문제를 해결하는 건 어렵지 않았는데
2중 반복을 피하고 해결하고 싶었다.
수시간을 고민끝에 결국 방법을 찾지못했다…

방법

citations을 반복 돌면서 이 배열의 크기에서 하나씩 줄여가며 최저점을 찾는다.

코드

[H_Index] []
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Solution {

public int solution(int[] citations) {
int cursor = citations.length;
while (true) {
int cnt = 0;

for(int num : citations) {
if(num >= cursor) cnt++;
}

//최저점보다 크면 하나 빼준다.
if(cnt < cursor) {
cursor--;
}

//같거나 작으면 반환
else if(cnt >= cursor) {
return cursor;
}

}
}
}

결과

다 풀고 나서 다른 사람의 코드를 봤는데
저런 방법이 있었다니
역시 안될땐 다른 코드를 볼 줄도 알아야한다.

끝!

공유하기