본문 바로가기

ETC

Programmers 코딩 테스트 연습 정렬(Sort) h-index 정답 Python.

반응형

def solution(citations):
    answer = 0
    citations_sorted = sorted(citations,reverse=True)
    for i in range(len(citations_sorted)):
        if citations_sorted[i]>=i+1:
            answer = i +1
            continue
        else:
            break
    return answer
    # 6 5 3 1 0

이 문제는 왜 정렬을 써야하는가...? 를 빠르게 캐치해내지 못하면 한도 끝도 없이 못풀고,

Idea를 이해하면 쉬운 문제이다.

 

h번 인용 이상이 h개, 나머지는 h번 이하... 를 찾는게 중요하고.

h는 크기보다 횟수에 초점을 맞추어야 한다는 것을 생각하면 쉽다.

 

먼저 테스트 케이스를 정렬하면

 

6 5 3 1 0 이렇게 되는데,

앞에서부터

6이 1 이상이므로 h 인덱스는 1

5가 2 이상이므로 h 인덱스는 2

3이 3 이상이므로 h 인덱스는 3

2는 4 이하이므로 h 인덱스는 3을 리턴하게 된다.

 

인용 횟수는 커지고, 배열의 원소는 작아지는데,

그 교점을 찾기 위해서 정렬을 사용한다는 idea를 찾아내면

쉬웠던 문제이다.

 

 

반응형