알고리즘
[프로그래머스] 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의 인덱스)이다. 이러한 아이디어를 활용하면 문제를 해결할 수 있다.