728x90
이해하기
처음엔 citations를 오름차순 정렬하고, for문으로 순회하면서 각각을 count하였는데 효율성에서 실패하였다.
그리고 사실 문제도 제대로 이해 못한 듯하다...
어떤 과학자가 발표한 논문 n편 중, h회 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었을 때, h의 최대값
을 구해야하는데 말이 좀 어려웠다.
참고한 블로그⬇️
일단 Arrays.sort()는 맞았고, 위 블로그에 따르면 특정 인덱스 i부터 citations 배열의 길이까지만큼의 논문이 citations[i]번 이상 인용되었다고 할 수 있다고 한다.
이해가 잘 안 돼서 또 그림으로 그려보기...
이렇게 citations[i]에서 i값을 증가시키고 논문의 수를감소시키면서 비교했을 때 인용 횟수가 논문의 수 이상이 되었을때의 논문의 수가 답이 된다.
문제풀이
import java.util.*;
class Solution {
public int solution(int[] citations) {
int answer = 0;
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;
}
}
과정은 이해했는데 h의 정의가 아직도 좀 헷갈려서 코드도 정확히 이해하지 못했다.
독해 능력이 필요했던 문제...
'JAVA > Coding Test Study' 카테고리의 다른 글
[Lv.2] 프로그래머스 - 전화번호 목록 : Java (0) | 2024.04.16 |
---|---|
[Lv.2] 프로그래머스 - 튜플 : Java (0) | 2024.04.15 |
[Lv.3] 프로그래머스 - 단속카메라 : Java (0) | 2024.04.15 |
[Lv.2] 프로그래머스 - 큰 수 만들기 : Java (0) | 2024.04.15 |
[Lv.1] 프로그래머스 - 예산 : Java (0) | 2024.04.15 |