[level 2] H-Index - 42747
성능 요약
메모리: 10.2 MB, 시간: 0.00 ms
구분
코딩테스트 연습 > 정렬
채점결과
Empty
문제 설명
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.
어떤 과학자가 발표한 논문 n
편 중, h
번 이상 인용된 논문이 h
편 이상이고 나머지 논문이 h번 이하 인용되었다면 h
의 최댓값이 이 과학자의 H-Index입니다.
어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요.
제한사항
- 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
- 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.
입출력 예
citations | return |
---|---|
[3, 0, 6, 1, 5] | 3 |
입출력 예 설명
이 과학자가 발표한 논문의 수는 5편이고, 그중 3편의 논문은 3회 이상 인용되었습니다. 그리고 나머지 2편의 논문은 3회 이하 인용되었기 때문에 이 과학자의 H-Index는 3입니다.
문제가 잘 안풀린다면😢
힌트가 필요한가요? [코딩테스트 연습 힌트 모음집]으로 오세요! → 클릭
※ 공지 - 2019년 2월 28일 테스트 케이스가 추가되었습니다.
나의 틀린 코드
값을 내림차순으로 정렬해두고, h값을 1씩 증가시켜 가며 반복하여 확인하는 과정이 필요할듯
근데 이거 시간초과 날거 같은데, 일단 구현해봄
1문제에서 시간초과가 발생함 다른 방법을 고민해봐야 할듯함.
def solution(citations):
citations.sort(reverse=True)
answer = citations[-1]
print(citations)
while True:
count = 0
flag = False
for citation in citations:
if count >= answer:
answer +=1
break
if citation >= answer:
count+=1
else:
if count < answer:
flag = True
break
if flag:
return answer-1
나의 맞춘 코드
너무 복잡하게 로직을 생각했나보다.
enumerate로 idx 값을 자연스럽게 얻어와서 현재 값과 비교하면 h의 조건에 맞출 수 있었다.
def solution(citations):
citations.sort(reverse=True)
for idx , citation in enumerate(citations):
if idx >= citation:
return idx
return len(citations)
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 모음 사전- python[ Permutation ] (0) | 2023.09.13 |
---|---|
[프로그래머스] 소수 찾기- python[ Brute Force] (0) | 2023.09.11 |
[프로그래머스] 가장 큰 수 - python[ 정렬 ] (2) | 2023.09.06 |
[프로그래머스] 디스크 컨트롤러 - python[ Min Heap ] (0) | 2023.09.05 |
[프로그래머스] 더 맵게- python[ Min Heap ] (1) | 2023.09.04 |