[알고리즘 문제풀이] 프로그래머스 - H-Index

yourjin·2022년 2월 27일
0

알고리즘 문제풀이

목록 보기
8/28
post-thumbnail

TIL (2022.02.13)

➕ 오늘 푼 문제


프로그래머스 - H-Index

➕ 아이디어


  • 인용 횟수에 따라 citations 를 오름차순으로 정렬한다.
  • 반복문을 돌며 해당 논문의 인용 횟수(quotation_count)와 그 이상 인용된 논문의 개수(thesis_count)를 구한다.
    • quotation_count : 현재 citations 의 값
    • thesis_count : citations에서 현재 값보다 큰 값을 가진 원소의 개수
  • 둘 중에 작은 값을 h 값으로 하여, h 값 중 최대 값을 구한다.
    • h-index는 h번 이상 인용된 논문이 h 개 이상인 최대 h이다.
    • 예를 들어 3번 이상 인용된 논문이 5개 이상 있다면, 3번 이상 인용된 논문은 3개 이상 있다고 볼 수 있다. 역으로 3번 이상 인용된 논문이 2개 이상 있다면, 2번 이상 인용된 논문은 2개 이상 있다고 볼 수 있다.
      • 따라서 두 값 중 작은 값을 현재의 h 값으로 볼 수 있다.

➕ Java 코드


import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        int n = citations.length;
        
        Arrays.sort(citations);
        
        for(int i=0; i<n; i++){
            int quotationCount = citations[i];
            int thesisCount = n-i;
            
            int h = Math.min(quotationCount, thesisCount);
            answer = Math.max(answer, h);
        }
        return answer;
    }
}

➕ Python 코드


def solution(citations):
    answer = 0
    n = len(citations)
    
		# 인용횟수 오름차순으로 정렬
    citations.sort()
    
    for i in range(n):
        quotation_count = citations[i]  # 인용 횟수
        thesis_count = n-i # 인용횟수가 quotation_count 이상인 논문 횟수
				
				# H-Index 구하기
				h = min(quotation_count, thesis_count)
        answer = max(h, answer)
        
    return answer

➕ 궁금한 내용 및 소감


  • 정렬 문제라는 것을 모르고 풀었다면, 과연 혼자 힘으로 풀 수 있었을 지 조금 의심이 든다 ㅎㅎ하지만 다행히 어렵지 않게 아이디어를 도출할 수 있었다. 유형을 모르더라도 풀 수 있게 익숙해져야겠다!

➕ 참고 문헌


  • 없음
profile
make it mine, make it yours

0개의 댓글