- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42747

 

Lv2. 문제다!

내가 이해한 방식으로 풀었지만, 계속 틀려서 무엇이 문제인지 몰랐던 문제다. 문제에서는 h index가 citations의 값으로 이루어져있다고 하지 않았는데, 그렇다고 생각해 풀어서 아쉬운 문제다 

 

문제 이해

h index의 최댓값은 인용횟수에서 최댓값이므로 1부터 해당 숫자까지 반복문을 돌리고, 

h index 후보 i에 대해서 i 이상의 횟수로 인용된 논문의 수를 num에 저장한다 

만약 num >= i 인 i 중에 최댓값을 answer에 저장한 다음 반환하면 된다 

 

- 정답풀이 :

def solution(citations):
    citations.sort()
    answer = 0
    for i in range(1, len(citations) + 1):
        num = 0
        for j in citations:
            if j >= i:
                num += 1
        if num >= i:
            answer = max(answer,i)
            
    return answer

 

- 시도해본 풀이 

거의 모든 테스트에 실패했는데, 그 이유가 h는 citations에 있는 숫자가 꼭 아니어도 되는 것을 인지하지 못했다. 

[1, 2, 4, 4, 5] 의 경우 2가 아닌 3이 h index이다. (인용 횟수 3이상인 논문이 3이상이므로) 

def solution(citations):
    citations.sort()
    answer = 0
    
    for h in citations:        
        idx = citations.index(h)
        #h번 이상 인용된 논문의 갯수 
        n = len(citations[idx : ])
        if n >= h:
            answer = max(answer, h)
            
    return answer

+ Recent posts