프로그래머스
H-Index문제
정렬 관련 문제
H-Index를 구하는 문제를 해결하기 위해, 주어진 인용 횟수 배열을 기반으로 H-Index를 계산하는 방법을 설명하겠습니다. H-Index는 특정 조건을 만족하는 최대 값을 찾는 것이므로, 이를 효율적으로 계산하기 위해 다음과 같은 절차를 따릅니다.
### H-Index 계산 방법
1. **정렬**: 주어진 인용 횟수 배열을 내림차순으로 정렬합니다. 이렇게 하면 인용 횟수가 높은 논문부터 차례로 확인할 수 있습니다.
2. **조건 확인**: 정렬된 배열을 순회하면서 H-Index 조건을 확인합니다. 즉, 인용 횟수가 h 이상인 논문의 수가 h 이상인지 확인합니다.
3. **최대 H-Index 찾기**: 조건을 만족하는 최대 h 값을 찾습니다.
### Python 코드 예시
아래는 위의 절차를 구현한 Python 코드입니다:
```python
def solution(citations):
# 1. 인용 횟수를 내림차순으로 정렬
citations.sort(reverse=True)
h_index = 0
# 2. H-Index 조건을 확인
for i in range(len(citations)):
if citations[i] >= i + 1: # i + 1은 현재까지의 논문 수
h_index = i + 1 # H-Index 업데이트
else:
break # 조건을 만족하지 않으면 종료
return h_index
# 예시 사용
citations = [3, 0, 6, 1, 5]
print(solution(citations)) # 출력: 3
```
### 코드 설명
- `citations.sort(reverse=True)`: 인용 횟수를 내림차순으로 정렬합니다.
- `for i in range(len(citations))`: 각 논문에 대해 인용 횟수를 확인합니다.
- `if citations[i] >= i + 1`: 현재 논문의 인용 횟수가 현재까지의 논문 수(즉, h) 이상인지 확인합니다.
- `h_index = i + 1`: 조건을 만족하면 H-Index를 업데이트합니다.
- `else: break`: 조건을 만족하지 않으면 더 이상 확인할 필요가 없으므로 루프를 종료합니다.
이 코드는 주어진 인용 횟수 배열에 대해 H-Index를 효율적으로 계산합니다.