문제
https://school.programmers.co.kr/learn/courses/30/lessons/42747
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
내 풀이
function solution(citations) {
citations.sort((a,b)=>a-b);
let h=0;
for (let i=citations[citations.length-1]; i>=0; i--){
if(citations.filter(n => n>=i).length>=i){
h=i;
break;
}
}
return h;
}
for문 안에 filter로 한 번 더 돌기 때문에 시간복잡도 상 안 좋은 코드인 것 같다.
다른 사람 풀이
function solution(citations) {
citations = citations.sort((a, b) => b - a);
let i = 0;
while (i + 1 <= citations[i]) {
i++;
}
return i;
}
이 풀이가 훨씬 간단하고 시간복잡도 상으로도 좋은 풀이 같다.