프로그래머스 H-Index

2025. 4. 13. 16:58·코딩테스트/프로그래머스

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42747#

문제 풀이

H-index의 크기를 이분 탐색을 이용해 구하는 방식으로 접근

valid_h_index 함수 : mid(h-index)가 주어졌을 때 citations 배열에서 mid보다 큰 수의 갯수가 mid보다 많을 경우 해당 값은 H-index로 사용가능

  • 가능하다면 answer를 더 큰 값으로 교체해주고 값을 증가시켜 검사를 진행 (더 큰 값으로도 가능한지 판단하기 위해)
  • 불가능하다면 값을 감소시켜 진행, 이 때 answer는 따로 할당이 필요없음.
function solution(citations) {
    var answer = 0;

    let left = 0;
    let right = citations.length;
    
    function valid_h_index(mid) {
        let valid_value = citations.filter(c => c >= mid).length;
        if (mid <= valid_value) {
            return true;
        } 
        return false;
    }

    while (left <= right) {
        let mid = Math.floor((left + right) / 2);
        if (valid_h_index(mid)) {
            answer = Math.max(answer, mid);
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    
    return answer;
}

결론

이분 탐색을 활용해 검사해야하는 h-index의 값의 범위를 줄여 접근

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

프로그래머스 의상  (0) 2025.04.14
프로그래머스 폰켓몬  (0) 2025.04.14
프로그래머스 행렬의 곱셈  (0) 2025.04.11
프로그래머스 n^2 배열 자르기  (0) 2025.04.10
프로그래머스 할인 행사  (0) 2025.04.09
'코딩테스트/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 의상
  • 프로그래머스 폰켓몬
  • 프로그래머스 행렬의 곱셈
  • 프로그래머스 n^2 배열 자르기
의현
의현
개발은 즐거워
  • 의현
    UIHYEON BLOG
    의현
  • 전체
    오늘
    어제
    • 분류 전체보기 (116)
      • 프론트엔드 (47)
        • JavaScript (47)
        • TypeScript (0)
        • HTML (0)
        • CSS (0)
        • React (0)
      • 프로젝트 (2)
        • Task Flow (2)
      • 코딩테스트 (66)
        • Binary Search (2)
        • bfs (Breadth-first s.. (4)
        • dfs (Deapth-first se.. (1)
        • Greedy (1)
        • Dynamic Programming (1)
        • two pointer (4)
        • 구현 (2)
        • LIS(Longest Increasi.. (0)
        • 문자열 (3)
        • 자료구조 (4)
        • 비트마스크 (2)
        • 수학 (2)
        • 프로그래머스 (40)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
의현
프로그래머스 H-Index
상단으로

티스토리툴바