[프로그래머스] H-Index

Munang·2021년 8월 17일
0

알고리즘

목록 보기
19/26

저번에 다리를 지나는 트럭이랑 비슷한 느낌이다. 문제 설명이 애매모호한.

1. 문제 설명

나는 처음에 문제를 잘못이해했다. 배열의 원소 하나하나를 정답이 되는 인용횟수중 하나라고 생각하고 풀었다.
근데 그게 아니었다. 그냥 1부터 세면 된다. [3,4,9,10] 배열에서 1번 이상 인용된 논문은 4개다. 그리고 1번 이하로 인용된 논문의 개수는 4개 이하이다.
1은 H-Index의 후보가 될 수 있다.
이 문제에서는 최대값을 구하면 된다.

2. 어려웠던 점

문제 해설이 그냥 어려웠다..

3. 풀이

처음에 이렇게 풀이했다. 아마 나처럼 문제 잘못 이해한 사람들은 다 이렇게 풀었을 것 같다.

def solution(citations):
    citations.sort()
    result = []

    for i in citations:
        if len(list(filter(lambda x: x >= i, citations))) == i:
            if len(list(filter(lambda x: x <= i, citations))) == len(citations) - i + 1:
                result.append(i)

    if len(result) > 0:
        return max(result)
    else:
        return 0

제대로 풀이한 내용

def solution(citations):
    citations.sort()

    for i in range(citations[-1], 1, -1): #최대 값임으로, 가장 큰 수부터 검사하여 확인되면 바로 리턴
        if len(list(filter(lambda x: x >= i, citations))) >= i:
            if len(list(filter(lambda x: x <= i, citations))) <= i:
                return i
    else:
        return 0

어렵지는 않았다.

0개의 댓글