article thumbnail image
Published 2022. 4. 20. 14:55

​- 프로그래머스 / 정렬 / H-index -

 

 

문제설명

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다.

어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다.

위키백과에 따르면, H-Index는 다음과 같이 구합니다.

어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 

h의 최댓값이 이 과학자의 H-Index입니다.

어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때,

이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.

 

 

 

제한사항

  • 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
  • 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.

 

 

 

입출력 예

citations return
[3, 0, 6, 1, 5] 3

 

 

 

풀이과정

class SolutionH_index {
    public int solution(int[] citations) {
        int answer = 0;

        Arrays.sort(citations);

        while (true) {
            int cnt = 0;
            
            for (int citation : citations) {
                if (citation >= answer) {
                    cnt++;
                }
            }
            
            if (answer > cnt) {
                answer--;
                break;
            }
            else {
                answer++;
            }
        }
        return answer;
    }
}

- 풀이 방법

    1. answer = 0 에서 시작

    2. answer 보다 큰 citations 배열 원소 카운트

    3. answer 가 2에서 카운트 된 원소 수보다 크면 answer 에 1을 빼고 while 문 탈출 후 answer 리턴

    4. 3조건이 만족하지 않으면 answer 에 1 더하고 while 문 반복

 

 

코드 실행 결과

 

 

 

 

- Just Do It -

 

반응형

'CodingTest' 카테고리의 다른 글

[Java] 가장 큰 수  (0) 2022.04.19
[Java] K번째 수  (0) 2022.04.18
[Java] 베스트 앨범  (0) 2022.04.02
[Java] 전화번호 목록  (0) 2022.04.02
[Java] 완주하지 못한 선수  (0) 2022.04.02
복사했습니다!