문제를 봐도 이해가 안되어서 문제에 대한 힌트만 보려고 검색하게 되었다.
문제의 해석을 봐도 잘 이해가 안되었고 내가 이해한 방식대로 문제를 푸니까 맞았다.
내가 이해한 문제 해석이다.
일단 내림차순으로 정렬을 한다.
쭉 나열된 배열에서 인덱스+1과 요소들을 비교를 해서
인덱스+1 보다 요소들이 큰 값을 세는 것이다.
즉, 논문의 개수 중에서 인용 횟수가 논문의 개수와 같거나 증가된 값들을
선별해서 리턴하는 것이다.
문제를 풀면 이렇다
function solution(citations) {
let sortedArr = citations.sort((a,b)=>{return b-a})
let hIndex=0;
hIndex= sortedArr.map((x,i)=>{
if(x>=i+1){return i}
})
hIndex = hIndex.filter(x=>{
return x!== undefined
})
return (hIndex.length)
}
쭉 코드들을 보다보니 map과 filter 를 하나의 과정으로 합칠수 있었다.
리팩토링 한 코드 이다.
function solution(citations) {
let sortedArr = citations.sort((a,b)=>{return b-a})
sortedArr = sortedArr.filter((x,i)=>{
return x>=i+1
})
return (sortedArr.length)
}