자바칩
[프로그래머스 / Java] 코딩테스트 연습: H-Index (정렬) 본문
728x90
난이도: Level 2
문제: https://school.programmers.co.kr/learn/courses/30/lessons/42747
이 문제가 정렬로 분류되어있지만 사실 정렬할 필요가 전혀 없다.
어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
빨간색으로 표시한 문장은 헷갈릴 수 있다.
나머지 논문의 개수가 h번 이하인 것이 아니라, 나머지 논문의 배열 값(논문의 인용 횟수)이 모두 h번 이하를 만족하냐는 것이다.
하지만 사실 파란색 문장만 잘 구현해줘도 빨간색 문장은 무시해도 된다.
"n편 중"을 초록색으로 표시한 이유는, h의 범위가 0부터 n편이라는 뜻이다.
즉, h의 범위는 0부터 논문 배열의 전체 길이이다.
n편 중이라고 했으므로 논문 배열의 전체 길이인 n까지도 범위에 포함시켜야 한다.
전체 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
class Solution {
public int solution(int[] citations) {
int answer = 0; // H-Index
// h는 0부터 논문의 전체 편 수만큼 증가시키기
for (int h = 0; h <= citations.length; h++) {
int count = 0; // h번 이상 인용된 논문의 편 수
// 모든 논문의 인용 횟수 탐색
for (int citation : citations) {
if (citation >= h) { // 해당 논문의 인용 횟수가 h번 이상이라면
count++; // h번 이상 인용된 논문의 편 수 1 증가
}
}
if (count >= h) { // h번 이상 인용된 논문이 h편 이상이라면
answer = h; // H-Index를 현재 h로 설정
}
}
return answer; // H-Index 리턴
}
}
|
cs |
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Java] 코딩테스트 연습: 이중우선순위큐 (힙) (0) | 2024.08.22 |
---|---|
[프로그래머스 / Java] 코딩테스트 연습: 디스크 컨트롤러 (힙) (0) | 2024.08.22 |
[프로그래머스 / Java] 코딩테스트 연습: 가장 큰 수 (정렬) (0) | 2024.08.11 |
[프로그래머스 / Java] 코딩테스트 연습: 베스트앨범 (해시) (0) | 2024.08.09 |
[프로그래머스 / Java] 코딩테스트 연습: 의상 (해시) (0) | 2024.08.08 |