[프로그래머스/Javascript] H-index

알고리즘

Posted by Kyun2da on July 6, 2020

1️⃣서론

프로그래머스 level2 문제 H-index입니다. Javascript를 이용하여 해결하였습니다.

2️⃣문제 설명

H-index

3️⃣풀이

인용된 논문의 횟수가 담긴 배열이 주어지고 h번 이상 인용된 논문이 h편 이상인 h의 최댓값을 구하는 문제입니다. 저는 맨처음에 dp를 이용해서 풀었으나 다른 사람의 코드를 보니 역으로 정렬해주면 쉽게 구할 수 있다는 것을 알았습니다. 제가 푼 dp와 다른 사람이 푼 정렬 코드를 보겠습니다.

4️⃣ 내가 푼 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const solution = (citations) => {
  let answer = 0;
  let arr = new Array(10001);
  for (let i = 0; i < arr.length; i++) {
    arr[i] = 0;
  }

  for (let i = 0; i < citations.length; i++) {
    arr[citations[i]] += 1;
  }
  for (let i = 9999; i >= 0; i--) {
    arr[i] += arr[i + 1];
  }

  for (let i = 10000; i >= 0; i--) {
    if (arr[i] >= i) {
      return i;
    }
  }
};

5️⃣ 다른사람 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
const sorting = (a, b) => {
  return b - a;
};

const solution2 = (citations) => {
  citations = citations.sort(sorting);
  let i = 0;
  while (i + 1 <= citations[i]) {
    i++;
  }
  return i;
};

6️⃣ 결론

어려운 문제는 아니었으나 제가 어렵게 접근한 감이 없지 않아 있었던 것 같습니다. 항상 다른 사람의 코드를 보면 어떻게 저렇게 쉽게 풀지? 라는 생각이 드는 건 아직 제가 많이 부족해서인 것 같습니다. 좀더 노력해야 할 것 같습니다.

7️⃣ 마치며..

질문과 지적은 환영합니다. 이 문제는 최적의 정답일 수도 아닐수도 있습니다.
궁금한게 있으시면 아래 댓글 남겨주세요.🙏
댓글은 저에게 큰 힘이 됩니다!
감사합니다. ❤️