상세 컨텐츠

본문 제목

항해32일차

본문

728x90
반응형

프로그래머스
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를 효율적으로 계산합니다.

728x90
반응형

'<알고리즘 문제풀이& 연습> > 코딩테스트 연습' 카테고리의 다른 글

항해34일차  (1) 2024.12.01
항해33일차  (0) 2024.11.30
항해31일차  (0) 2024.11.28
항해30일차  (1) 2024.11.27
항해29일차  (2) 2024.11.26

관련글 더보기