// 테케 9, 16 실패
function solution(citations) {
const sorted = citations.sort((a, b) => b - a);
for (let i = 0; i < sorted.length; i++) {
if (sorted[i + 1] <= i + 1) return i + 1;
}
}
// 테케 16 : 0일 떄 처리
function solution(citations) {
const sorted = citations.sort((a, b) => b - a);
if (sorted[0] === 0) return 0;
for (let i = 0; i < sorted.length; i++) {
if (sorted[i + 1] <= i + 1) return i + 1;
}
}
// 통과 , 테케 9 : 최소가 length보다 클 때 [24,42]
// 시간 : O(nlogn + n) = O(nlogn)
// 공간 : O(n)
function solution(citations) {
const sorted = citations.sort((a, b) => b - a);
if (sorted[0] === 0) return 0;
// for (let i = 0; i < sorted.length; i++) {
// if ((sorted[i + 1] || 0) <= i + 1) return i + 1;
// } //아래와 같이 최적화
for (let i = 1; i < sorted.length + 1; i++) {
if ((sorted[i] || 0) <= i) return i;
}
}
/*
내림차순으로 정렬 시, index+1을 x값, index에 해당하는 item value를 y값으로 생각
y=x 값과 같거나 더 작은 값이 나올 경우, y=x에 해당되는 index+1 값을 리턴함.
array의 모든 값이 y=x 직선 위에 존재할 경우(최소가 length보다 클 때)를 처리하기 위해,
length+1까지 for문을 돌리고, array[length] (undefined)가 나올 경우 if문이 반드시 true가 되게끔 0을 or처리해 length값을 return함.
*/
// find(element, idex) return element
// indexOf(value, startIndex) return index
// findIndex(element, index) return index
Level
프로그래머스 Lv2
Recruitment