https://school.programmers.co.kr/learn/courses/30/lessons/42747
H-index 구하라
문제 설명 : n편의 논문 중, h번 이상 인용된 논문이 h편 이상이고, h번 이하 인용되었다면, h의 최댓값이 H-index이다.
(아래 풀이 & 코드 해석에서 부연설명)
문제가 해석이 안되신다면 정상입니다.
오히려 프로그래머스에서 제공하는 문제가 더 어려운 문제였다고 생각됩니다.
코딩 테스트라기보다는 오히려 독해 문제라고 하는게 옳지 않았나라는 개인적인 생각이 드네요.
https://postechlibrary.tistory.com/489
위 사이트에서 h-index에 대해서 쉽고 정확하게 설명하고 있습니다.
문제의 요점 & 풀이법은
논문을 인용수 내림차순으로 정렬하였을 때,
논문의 정렬 순서(no)와 논문의 인용수(citations)가 같은 경우, 또는 정렬 순서보다 인용수가 작은 경우 해당 no가 H-index가 된다는 아이디어를 통해서 문제를 해결하는 것입니다.
import java.io.*;
import java.util.*;
class Solution {
public int solution(int[] citations) {
int answer = citations.length;
int no = 1;
Arrays.sort(citations);
for (int i = citations.length-1; i >= 0; i--) {
System.out.println(no + " : " + citations[i]);
if (no == citations[i]) {
answer = no;
System.out.println(answer);
break;
} else if (no > citations[i]) {
answer = no - 1;
} else {
no++;
}
}
return answer;
}
}
기존에 작성한 코드는 위에서 설명한 내용을 토대로 구현하였습니다.
다른 사람 풀의의 솔루션에서는 좀 더 효율적으로 구현하신분의 코드도 있으니 참고하시면 좋을 것 같습니다.
문제가 헷갈려서 너무 어려웠다.
해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.
혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다!
python source : https://github.com/ssh5212/conding-test-practice
java source : https://github.com/ssh5212/coding-test-java
[Baekjoon] 백준 2573 빙산 (G4^ / BFS) - Java (0) | 2023.10.22 |
---|---|
[Baekjoon] 백준 7569 토마토 (G5^ / BFS) - Java (1) | 2023.10.12 |
[Baekjoon] 백준 15683 감시 (G4^ / DFS) - Java (0) | 2023.04.14 |
[SWEA] 2382. 미생물 격리 (D0^ / 시뮬레이션) - Java (0) | 2023.04.12 |
[Baekjoon] 백준 14889 스타트와 링크 (D2 / 조합) - Java (1) | 2023.04.11 |