반응형
SMALL
https://programmers.co.kr/learn/courses/30/lessons/42747
- Arrays.sort()
- 기본 오름차순
- h번 이상 인용된 논문이 h편 이상인 h의 최댓값 구하기
- 즉, citations 배열의 h개의 논문 모두 h 이상이고 나머지는 h 이하인 h의 최대값 구하기
import java.util.*;
class Solution {
public int solution(int[] citations) {
int answer = 0;
// 각 논문의 인용 횟수 배열인 citations 정렬 (오름차순)
Arrays.sort(citations);
for(int i = 0; i < citations.length; i++) {
int h = citations.length - i;
if(citations[i] >= h) {
answer = h;
break;
}
}
return answer;
}
}
- 배열을 먼저 오름차순으로 정렬
- citations[0] 부터 보자면 citations[0]번 이상 인용된 논문은 citations.length (= h)
- 제일 작은 숫자니까
- 배열의 값은 증가해가고 h는 1씩 줄어들면서 배열의 값이 h보다 같거나 커질 때
- h가 1씩 줄어든다는건 체크해야 할 논문의 남은 개수와 같음
- 같거나 커졌을 때 어차피 남은 논문들은 모두 h 이상이고 그 전 숫자들은 모두 h 이하이므로
- 또한, 같거나 커졌을 때의 h가 결국 최대값이므로
- 이때의 h를 리턴하는 것!
반응형
LIST
'JAVA > Algorithm' 카테고리의 다른 글
[프로그래머스/java] 큰 수 만들기 (0) | 2020.12.29 |
---|---|
[프로그래머스/java] 더 맵게 (PriorityQueue) (0) | 2020.12.29 |
[프로그래머스/java] 가장 큰 수 (+ Comparator / compareTo) (0) | 2020.12.28 |
[프로그래머스/java] 다리를 지나는 트럭 (큐) (+ 주석 설명) (0) | 2020.12.26 |
[프로그래머스/java] 멀쩡한 사각형 (Summer/Winter Coding 2019) + 최대공약수 구하기 (0) | 2020.12.26 |