1. 생각
// 생각
// citations 정렬 후 반복문 돌기
// 구현
// h-index 최댓값은 citations의 길이부터 시작가능
// citations 정렬
// citations를 돈다(내림차순으로)
// 각 값이 h-index보다 크거나 같으면 지금까지 count 1 증가 후 다음으로
// 각 값이 h-index보다 작으면 h-index와 count비교해서 다르면 종료 후 h-index 1 줄이고 다시 반복
// 각 값이 h-index보다 작으면 h-index와 count비교해서 같으면 해당 h-index 리턴
2. 회고
맨 처음에 위와 같은 생각을 가지고 풀었는데 딱 한 테케가 실패했다. 다른 테케들을 넣어봤지만 도저히 못 찾겠어서 다른 글들을 참고해보니 [4, 3, 3, 3, 0, 0, 0,], 3인 테케가 실패했다.
풀이를 보니 h-index의 정의에 따라 비교 조건을 잘못 줘서 그런 거였다. 그래서 그 부분을 수정하니 통과.
아래는 원래 풀이인데 if(h_index != count) 이 부분을 if(count < h_index) 이렇게 바꿔줬다. 이래야 h-index의 정의를 온전히 만족시킨다.
// 생각
// citations 정렬 후 반복문 돌기
// 구현
// h-index 최댓값은 citations의 길이부터 시작가능
// citations 정렬
// citations를 돈다(내림차순으로)
// 각 값이 h-index보다 크거나 같으면 지금까지 count 1 증가 후 다음으로
// 각 값이 h-index보다 작으면 h-index와 count비교해서 다르면 종료 후 h-index 1 줄이고 다시 반복
// 각 값이 h-index보다 작으면 h-index와 count비교해서 같으면 해당 h-index 리턴
import java.util.*;
class Solution {
public int solution(int[] citations) {
int h_index = citations.length;
// 정렬
Arrays.sort(citations);
// 반복문 돌기
int count = 0;
for(int i = citations.length-1; i>=0; i--){
int cur = citations[i];
if(cur >= h_index){
count += 1;
}else{
if(h_index != count){
h_index -= 1;
count = 0;
i = citations.length;
}else{
break;
}
}
}
return h_index;
}
}
3. 체크
풀이 횟수 | 시간 | 정답 여부 | 참고 여부 |
2 | 30분 | X | O |
'코딩테스트' 카테고리의 다른 글
[프로그래머스/자바] 행렬의 곱셈_12949 (0) | 2023.08.08 |
---|---|
[프로그래머스/자바] n^2 배열 자르기_87390 (0) | 2023.07.28 |
[프로그래머스/자바] 연속 부분 수열 합의 개수_131701 (0) | 2023.07.27 |
[프로그래머스/자바] 괄호 회전하기_76502 (0) | 2023.07.27 |
[프로그래머스/자바] 멀리 뛰기_12914 (0) | 2023.07.26 |