프로그래머스 H-index (level 2)

나의 1차 풀이 (풀이 시간 : 5분 30초)

function solution(citations) {
    var answer = 0;
    for (let i = 1; i <= citations.length; i++) {
        if (citations.filter(x => x >= i).length >= i) {
            answer = i;
        }
    }
    
    return answer;
}

간단하게 풀 수 있는 문제다. 하지만 O(n^2)인게 조금 걸려서 다른 방법도 한번 찾아보자.

나의 2차 풀이

function solution(citations) {
    var answer = 0;
    let sortedCitations = citations.sort((a,b) => b-a);
    for (let i = 1; i <= citations.length; i++) {
        if (citations[i] < i) {
            answer = i;
            break;
        }
    }
    
    return answer;
}

정렬 한 후에 특정 인덱스에서 인덱스 값과 원소값을 비교하여 판별한다. 실행시간이 눈에 띄게 줄었지만, 3개의 테스트 케이스를 통과하지 못했다.

나의 3차 풀이

function solution(citations) {
    var answer = 0;
    let sortedCitations = citations.sort((a,b) => b-a);
    for (let i = 0; i <= citations.length; i++) {
        answer = i;
        if (citations[i] < i+1) {
            break;
        }
    }
    
    return answer;
}

for문의 range를 다르게 하니까 해결되지 않았던 테스트 케이스들이 풀렸다.

다른 사람들의 풀이

3차 풀이와 동일하게 풀었다.

좋은 웹페이지 즐겨찾기