제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
Programmers 알고리즘 고득점 Kit입니다.
포인트
H-Index를 찾기 위해서 정렬이 꼭 필요합니다. 또 i를 0부터 순회하면 len - i는 최대 값이 되므로 다음 코드와 같이 로직을 계산합니다.
소스코드
import java.util.*;
class Solution {
public int solution(int[] citations) {
Arrays.sort(citations);
int len = citations.length;
for (int i = 0; i < len; i++) {
if (citations[i] >= len - i) {
return len - i;
}
}
return 0;
}
}
코드 설명
- Arrays.sort(citations);
주어진 citations 배열을 오름차순으로 정렬합니다. 이는 논문의 인용 횟수를 작은 순서부터 큰 순서로 정렬하여 H-Index를 계산하기 쉽게 만듭니다. - for (int i = 0; i < len; i++) { if (citations[i] >= len - i) { return len - i; } }
citations 배열을 순회하며 H-Index 조건을 검사합니다.
- citations[i]는 논문의 인용 횟수를 나타냅니다.
- len - i는 현재 인덱스 기준으로 남은 논문 개수를 나타냅니다.
- if (citations[i] >= len - i): 논문 i번째의 인용 횟수가 남은 논문 개수 이상일 경우, H-Index 조건을 만족합니다. 즉, 인용 횟수가 적어도 len - i 이상인 논문이 len - i편 존재한다는 의미입니다.
- 루프를 다 돌아도 H-Index 조건을 만족하는 값이 없다면 0을 반환합니다. 이는 모든 논문의 인용 횟수가 H-Index 조건을 만족하지 않을 때입니다.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[코딩테스트] Java 모의고사 (1) | 2024.11.13 |
---|---|
[코딩테스트] Java 최소 직사각형 (0) | 2024.11.13 |
[코딩테스트] Java 가장 큰 수 (1) | 2024.11.12 |
[코딩테스트] Java K번째 수 (0) | 2024.11.12 |
[코딩테스트] Java 이중 우선순위 큐 (6) | 2024.11.11 |