TODAY TIL
📌 문제 설명
H-Index는 과학자의 생산성과 연구 영향력을 나타내는 지표입니다. 한 과학자의 H-Index h는 다음과 같이 정의됩니다:
- h번 이상 인용된 논문이 h편 이상
- 나머지 논문이 h번 이하 인용
즉, hh의 최댓값을 구하는 것이 목표입니다.
제한사항
- 논문 수 n: 1 이상 1,000 이하
- 논문별 인용 횟수: 0 이상 10,000 이하
💡 문제 이해
논문의 인용 횟수 배열을 분석하여, 위 조건을 만족하는 hh의 최댓값을 구합니다.
🛠️ 풀이 방법
문제를 해결하기 위해 다음과 같은 단계를 거칩니다:
- 내림차순 정렬
- 논문의 인용 횟수를 내림차순으로 정렬합니다.
- 이렇게 하면 인용 횟수가 높은 논문부터 조건을 확인할 수 있습니다.
- H-Index 조건 확인
- 정렬된 배열에서 i+1번째 논문이 i+1번 이상 인용되었는지 확인합니다.
- 이 조건을 만족하는 i+1이 h입니다.
- 조건 만족 여부
- 조건을 만족하지 않는 순간 반복을 멈추고, 이전까지 구한 hh의 최댓값을 반환합니다.
📄 Python 코드
def solution(citations):
# 1. 내림차순 정렬
citations.sort(reverse=True)
# 2. H-Index 계산
h_index = 0
for i, citation in enumerate(citations):
if citation >= i + 1: # h 조건 확인
h_index = i + 1
else:
break
# 3. 결과 반환
return h_index
🔍 단계별 풀이
- 내림차순 정렬
citations.sort(reverse=True)
- 논문의 인용 횟수를 내림차순으로 정렬합니다.
- 예시 입력: [3, 0, 6, 1, 5]
- 정렬 결과: [6, 5, 3, 1, 0]
2. H-Index 조건 확인
for i, citation in enumerate(citations):
if citation >= i + 1:
h_index = i + 1
else:
break
- 논문 i+1번째의 인용 횟수가 i+1 이상인지 확인합니다.
- 조건이 만족되지 않으면 반복을 멈춥니다.
3. 최댓값 반환
return h_index
- 최종적으로 구한 h 값 중 최댓값을 반환합니다.
📊 예제 테스트
예제 1
citations = [3, 0, 6, 1, 5]
print(solution(citations)) # 결과: 3
- 정렬: [6, 5, 3, 1, 0]
- hh 계산:
- 1번째 논문: 6>=1 → h=1
- 2번째 논문: 5>=2 → h=2
- 3번째 논문: 3>=3 → h=3
- 4번째 논문: 1<4 → 조건 불만족, 종료
- 최종 결과: h=3
예제 2
citations = [10, 8, 5, 4, 3]
print(solution(citations)) # 결과: 4
- 정렬: [10, 8, 5, 4, 3]
- hh 계산:
- 1번째 논문: 10>=1 → h=1
- 2번째 논문: 8>=2 → h=2
- 3번째 논문: 5>=3 → h=3
- 4번째 논문: 4>=4 → h=4
- 5번째 논문: 3<5 → 조건 불만족, 종료
- 최종 결과: h=4
⏳ 복잡도 분석
- 시간 복잡도
- 정렬: O(nlogn)
- 배열 순회: O(n)
- 총합: O(nlogn)
- 공간 복잡도
- 추가 메모리를 사용하지 않으므로 O(1)
✨ 마무리
H-Index 문제는 간단한 조건 확인과 정렬을 통해 해결할 수 있습니다. 중요한 점은 조건을 만족하는 순간까지 hh를 계산하고 최댓값을 반환하는 것입니다.
이 코드를 통해 데이터 분석 및 알고리즘 설계 능력을 키울 수 있으며, 특히 논문이나 데이터를 분석하는 데 유용한 지표 계산에 활용할 수 있습니다.
코드와 풀이에 대한 질문이 있으면 댓글로 남겨주세요!
'python' 카테고리의 다른 글
99클럽 코테 스터디_4기 33일차 TIL (0) | 2024.12.01 |
---|---|
99클럽 코테 스터디_4기 32일차 TIL (1) | 2024.11.30 |
99클럽 코테 스터디_4기 30일차 TIL (0) | 2024.11.27 |
99클럽 코테 스터디_4기 29일차 TIL (1) | 2024.11.26 |
99클럽 코테 스터디_4기 28일차 TIL (0) | 2024.11.25 |