원하는 것은 뭐든지

99클럽 코테 스터디 12일차 TIL , H-Index 본문

개발/문제풀이

99클럽 코테 스터디 12일차 TIL , H-Index

댕로그😏 2024. 8. 2. 15:02
반응형

문제

풀이

들어는 본 것 같은 H-Index 말로만 보면 헷갈려서 예제를 보면서 이해하는 게 좋아 보인다.

일단 계산 방법은 

  1. 발표된 논문 n
  2. 이 중 h번 이상 인용된 논문이 h 편 이상
  3. 나머지 논문이 h번 이하로 인용 (위에 기준이랑 겹치는 게 아닌지;;)

이면 이 사람의 H-Index는 h인 것이다.

 

1번 예제

입력 : [3,0,6,1,5]

0번 이상 인용된 논문은 5편, 나머지 논문은 없음

1번 이상 인용된 논문은 4편, 나머지 논문은 하나

2번 이상 인용된 논문은 3편, 나머지 논문은 둘

3번 이상 인용된 논문은 3편, 나머지 논문은 셋

4번 이상 인용된 논문은 2편.. 탈락

return 값은 3

2번 예제

입력: [1,2,3,4,5,6,7,8,9]

0번 이상 인용된 논문은 9편, 나머지 논문은 없음

1번 이상 인용된 논문은 9편, 나머지 논문은 없음

2번 이상 인용된 논문은 8편, 나머지 논문은 하나

3번 이상 인용된 논문은 7편, 나머지 논문은 둘

4번 이상 인용된 논문은 6편, 나머지 논문은 셋

5번 이상 인용된 논문은 5편, 나머지 논문은 넷

6번 이상 인용된 논문은 4편... 탈락

return 값은 5

 

제출 - 정답

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        int[] quotation = new int[10001];	//인용횟수
        int citation = citations.length;	//논문 개수
        int smaller = 0;					//인용 이전 개수들
        
        for(int x : citations){
            quotation[x] += 1;
        }
        for(int i=0;i<=citation;i++){		//0부터 논문개수만큼
            if(citation - smaller >= i
              && smaller <= i){				
                answer = i;
            }else{
                break;
            }
            smaller += quotation[i];
        }
        return answer;
    }
}

 

h는 n을 넘을 수 없다.

0부터 앞으로 논문 개수만큼 반복문을 돌면서 인용된 횟수를 smaller에 저장해 준다.

전체 논문 개수에서 이전 인용의 수가 현재 인용수보다 같거나 크면 answer에 H-Idex를 갱신해 준다.

만약 조건에 부합하지 않으면 이후에도 부합하지 않기 때문에 break; 

TIL

  • 쉽게 생각하자
반응형
Comments