1️⃣서론
프로그래머스 level2 문제 H-index
입니다.
Javascript
를 이용하여 해결하였습니다.
2️⃣문제 설명
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️⃣ 마치며..
질문과 지적은 환영합니다. 이 문제는 최적의 정답일 수도 아닐수도 있습니다.
궁금한게 있으시면 아래 댓글 남겨주세요.🙏
댓글은 저에게 큰 힘이 됩니다!
감사합니다. ❤️