
문제 설명
- 배열에서 h보다 큰 수가 h개 이상 있다면 조건을 만족하는 h입니다.
- 조건을 만족하는 h중 가장 큰 h를 찾는 문제입니다.
접근법
- citations의 길이가 1000이하이기 때문에 O(n2)으로 풀어도 시간초과가 나지 않습니다.
- 가장 큰 값을 찾아야 하기 때문에 0부터 n까지가 아니라 n부터 0까지 반복문을 실행합니다. 처음 조건을 만족하는 값이 가장 큰 정답이 됩니다.
정답
class Solution {
public int solution(int[] citations) {
int answer = 0;
Here : for (int i = citations.length; i >= 0; i--) {
int h = i;
int cnt = 0;
for (int c = 0; c < citations.length; c++) {
if(citations[c]>=h) {
cnt++;
}
}
if (cnt >= h) {
answer = h;
break Here;
}
}
return answer;
}
}
기타
- 처음에
if (cnt >= h)
이 아니라 if (cnt == h)
로 확인해서 틀렸었다.
- h이상인 수(cnt)가 h개 있어야 하는 게 아니라 h이상인 수(cnt)가 h개 보다 많이 있으면 조건을 만족하기 때문에 이렇게 수정해야 한다.