알고리즘 공부

[프로그래머스] H-Index- java

철매존 2021. 11. 20. 17:48
728x90

문제 설명

1. 논문의 인용 횟수가 적혀있는 citations배열이 주어진다.

2. 인용 횟수가 n번 이상인 논문이 n개일 때 최대의 n을 구하면 된다.

ex) 3,4,2,3,3 -> 2번인용 1개, 3번인용 3개, 4번인용 1개

풀이 과정

 1. 굉장히 간단한 배열 문제이다.

 2. citations배열을 정렬해 준다. 참고로 내림차순배열하면 간단한데 나는 그냥 정렬해서 뒤에서부터 진행한다.

 3. 어떤 논문이 N번 인용되었다고 하면 그 논문은 N-1번보다, N-2번보다, N-3번......보다 더 많이 인용되었다는 것이다.

 4. 말하자면 4, 4, 3, 3, 2, 1, 1, 1 번 인용되었다고 하면

4번인용 -> 2개

3번인용 -> (2개) + 2개

2번인용 -> (2개 + 2개) + 1개

1번인용 -> (2개 + 2개 + 1개) +3개

 

이렇게일것이다.

 5. 가장 많이 인용된 논문부터 진행하면서 count를 하나씩 늘려주고, 그 count가 해당 논문의 인용횟수보다 크거나 같으면 그게 최대가 될 것이다.

 6. cnt를 for문에 넣고 하나씩 크기를 키우면서 비교하다, 둘의 크기가 같아지는 순간 for문을 나가면 된다.

 7. 추가로 만약 모든 논문의 인용횟수가 전체 배열보다 큰 경우 그게 바로 정답이 된다.

 8. 매우 짧고 직관적인 내용이기 때문에 코드로 적어두겠다.

코드