프로그래머스 - H-Index (Level 2)
2024. 1. 22. 02:29ㆍ코딩테스트 정리(자바)
728x90
import java.util.*;
class Solution {
public int solution(int[] citations) {
int n=citations.length;
int answer=0;
Arrays.sort(citations); //오름차순 정렬
for(int i=0;i<n;i++){
int h=n-i;
//h는 1부터 배열 길이까지 가능하다
if(citations[i]>=h){
//오름차순 정렬했으므로 해당 인덱스가 h 이상이라면 답은 h
answer=h;
break;
}
}
return answer;
}
}
나의 풀이
: for문을 순서대로 따라가 보면
1. h=5-0=3, 5편 이상
0>=5가 성립하지 않으므로 다음으로
2. h=5-1=4, 4편 이상
1>=4 성립하지 않으므로 다음으로
3. h=5-2=3, 3편 이상
3>=3 성립하므로 답.
h를 최댓값부터 줄여나가기 때문에 가장 먼저 조건에 성립하면 그것이 답이다.
내림차순으로 H-index를 찾을 수도 있다.
int 배열을 내림차순으로 정렬하기
:
Arrays.sort(arr, Collections.reverseOrder());
그러나 int배열을 Integer 타입 배열로 변환시킨 후 정렬해야 한다.
Object 타입만 가능 -> 기본형은 안됨
Integer 배열로 변환하기
:
Integer[] arr3 = Arrays.stream(arr).boxed().toArray(Integer[]::new);
다시 int 배열로 변환하기
:
Arrays.stream(a).mapToInt(Integer::intValue).toArray();
즉, int 배열을 내림차순으로 정렬 후 int 배열로 변환하기까지의 과정은 아래와 같다.
Integer[] arr = Arrays.stream(citations).boxed().toArray(Integer[]::new);
Arrays.sort(arr, Collections.reverseOrder());
citations=Arrays.stream(arr).mapToInt(Integer::intValue).toArray();
728x90
'코딩테스트 정리(자바)' 카테고리의 다른 글
| 프로그래머스 - 전화번호 목록 (Level 2) (0) | 2024.01.23 |
|---|---|
| 프로그래머스 - 문자열 내림차순으로 배치하기(Level 1) (0) | 2024.01.22 |
| 프로그래머스 - 두개 뽑아서 더하기( Level 1) (1) | 2024.01.20 |
| 프로그래머스 - k번째 수 (Level 1) (0) | 2024.01.20 |
| 프로그래머스 - 불량 사용자(Level 3) (0) | 2024.01.18 |