728x90

문제


https://programmers.co.kr/learn/courses/30/lessons/42747

 

코딩테스트 연습 - H-Index

H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표

programmers.co.kr

 

코드


function solution(citations) {
    let answer = 0;
    citations.sort((a, b) => (b - a)); //내림차순 정렬
    //i는 인용횟수, citations[i]는 각 인용횟수별 논문개수
    for (let i=0; i<citations.length; i++) {
        if (i < citations[i]) answer++; //인용횟수가 논문개수보다 작을때까지는 계속해서 +1 해주기 (최대값을 구하는 거니까)
    }
    return answer;
}

 

후기


  • 많은 분들의 후기를 보니 나처럼 문제 이해에 골머리 앓는 분들이 많은 것 같았다
  • 처음에는 주어진 테스트케이스의 해설을 보며 생각보다 쉽군 하며 접근해 보았는데 완전 큰코 다쳤다. 주어지는 배열을 오름차순 정렬하고 중간값을 찾아서 중간값 이후의 숫자들이 중간값크기보다 크냐 작냐에 따라 중간값을 이동하며 값을 return 하려고 했는데, 하면 할수록 함정에 빠진 것마냥 하드코딩이 되어가고 답이 안나오는 상황을 겪었다
  • 결국 다른 분의 풀이를 참고하였는데, 이 문제를 제대로 이해하기 위해서는 다음 사이트를 참고하는 것이 정말 큰 도움이 되었다 (문제 이해가 안되시는 분들은 꼭 보시길 바란다!)
  • https://www.ibric.org/myboard/read.php?Board=news&id=270333 
  • 사이트를 이해하고 나니 코드가 너무 간결해서 민망할 지경이었다

+ Recent posts