코딩문제풀이/프로그래머스

[Python] H-Index

코딩하는 포메라니안 2021. 8. 27. 15:40

1. 문제

 

 

 

2. 풀이 과정

 

방법 1) 이진탐색을 사용한다. 최소값 즉, start = 0이고 최대는 가능한 n편의 최대가 배열의 길이이므로 end = l로 설정하였다.

def solution(citations):
    citations.sort()
    l = len(citations)
    s = 0
    e = l #최댓값
    while s <= e:
        m = (s+e)//2
        if m==0 or (0 < m <= l and citations[l-m] >= m):
            s = m+1
        else:
            e = m-1
    return e

 

방법 2) 속도는 방법 1)이 이진탐색을 사용하여 더 빠르고 이 방법은 순차탐색이므로 더 느리다. 대신, 코드 측면에서 볼 때는 더 간결하다.

def solution(citations):
    answer = 0
    #6, 5, 3, 1, 0 :내림차순 정렬
    #1, 2, 3, 4, 5 :index
    answer = max(map(min, enumerate(sorted(citations, reverse = True), start = 1)))
    return answer

'코딩문제풀이 > 프로그래머스' 카테고리의 다른 글

[Python] 조이스틱  (0) 2021.08.28
[Python] 소수 찾기  (0) 2021.08.27
[Python] 가장 큰 수  (0) 2021.08.26
[Python] 더 맵게  (1) 2021.08.26
[Python] 주식 가격  (0) 2021.08.26