알고리즘

[프로그래머스] H-Index

yjenis 2024. 6. 13. 17:08

문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

문제

 

나의 풀이

def solution(citations):
    
    citations.sort(reverse = True)
    
    for i in range(len(citations)):
        if i >= citations[i]:
            return i
        
    return len(citations)

1T

- 처음엔 오름차순으로 정리하여 h번 이상 인용된 논문이 h편 이상인지 확인하기 위해 인덱스가 더 큰 숫자들의 개수를 count하고 count한 숫자와(cnt) 해당 논문의 인용횟수를 비교하여  count값이 크거나 같으면 만들어둔 빈리스트에 저장해 max값을 출력하려 하였다.

그러나 실패

 

2T

- 인덱스sort를 활용하였다. sort를 하면 인덱스를 기준으로 기준점 앞에는 인용횟수가 더 적은 것들이 놓이고 뒤에는 더 많은 것들이 놓이기 때문이다. 예시로 주어진 리스트 [3,0,6,1,5]를 sort하면 [0,1,3,6,5]가 되고 중간값인 3을 기준으로 하면 3보다 인용횟수가 이하는 것들은 3개(3의 인덱스+1)이며 이상인것은 3개(리스트의 길이-3의 인덱스)이다.  이러한 아이디어를 활용하면 문제를 해결할 수 있다.