[프로그래머스] 42747번 : H-Index

James·2023년 12월 11일
0

코딩 테스트

목록 보기
36/41
post-thumbnail

문제

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

풀이

[프로그래머스] 42747번 : H-Index 🥈(LEVEL2)
⏰ 걸린 시간 : 35분
시간복잡도 : O(N^2)

  • 알고리즘 유형 : [정렬]

✔️ [문제 접근 방법]

  1. answer 의 값을 citations(논문 배열)의 최대값으로 설정해준다.
    0-1. [🔑 POINT] answer의 값을 최대값을 원하고있고 빼면서 체크해주기 위해서 최대값으로 설정해주는 것이다.
  2. h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h 값이므로 바로 멈추고
  3. 그렇지 않을때 -1 씩 해준다.

코드(code)

def solution(citations):
    answer = max(citations)
    citations.sort()
    now = 0

    while True:
        for i in range(len(citations)-1):
            if citations[i] <= answer < citations[i+1]:
                if citations[i] == answer:
                    now = i
                else : 
                    now = i + 1
                break
        if len(citations) - now >= answer and now <= answer:
            break
        else:
            answer -=1
        
    return answer

회고

최대값을 구하는 문제를 큰 수부터 감소시키면서 접근하면 쉽다.

profile
의미있는 성장의 태도, 긍정적인 사고를 지닌 Deveolper

0개의 댓글