#문제
https://programmers.co.kr/learn/courses/30/lessons/42747#
#소스코드
import java.util.*;
class Solution {
public int solution(int[] citations) {
int answer = 0;
// stream 을 얻어서 Integer로 Wrap한 후, 내림차순으로 정렬한 후, int형으로 변환하여 Array로 리턴한다.
citations = Arrays.stream(citations).boxed().sorted(Collections.reverseOrder()).mapToInt(x->x).toArray();
boolean flag = true;
for(int i = 0; i < citations.length; i++){
int cnt = citations[i];
// 인용 횟수가 논문의 개수보다 많으면 h-index가 되는 것이 불가능하다.
if(cnt > citations.length) continue;
// 현재 인덱스가 인용 횟수 이상일 경우, 인용횟수가 큰 순으로 정렬했기 때문에
// 해당 인용 횟수만큼 논문의 개수가 충족된다는 것을 의미한다.
if(i >= cnt) {
// 인덱스가 인용 횟수 이상이 됬을 때의 가장 처음 값을 취한다.
answer = i;
flag = false; // [9, 8, 7, 6, 5] 의 경우 마지막 인덱스를 따로 처리해줘야 한다.
break;
}
}
if(flag) answer = citations.length;
return answer;
}
}
'💡Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] 예상 대진표 (Java) (0) | 2021.10.21 |
---|---|
[프로그래머스] 이진 변환 반복하기 (Java) (0) | 2021.10.21 |
[프로그래머스] 행렬의 곱셈 (Java) (0) | 2021.10.20 |
[프로그래머스] 괄호 회전하기 (Java) (0) | 2021.10.20 |
[프로그래머스] 튜플 (Java) (0) | 2021.10.20 |