해당 글은 항해99 클럽 코딩테스트 스터디에서 진행된 32일차(20241128) 비기너 문제에 대한
TIL(Today I Learned) 내용입니다.
문제 출처) https://school.programmers.co.kr/learn/courses/30/lessons/42747
문제해결에 활용한 핵심포인트!
이 문제에서 주목해야할 부분은 다음과 같다.
1. 주요조건
-
어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.
-
어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 합니다.
풀이방향
(1) 문제에 대한 이해 1
- 주어진 입출력 예시를 활용하여 문제를 명시적으로 이해하려 했다.
<입출력 예시1>
- 우선 주어진 citations배열을 정렬한 후, 문제에서 요구하는 것을 고려하는 것이 빠르다.
- 결국 citations[i]번 이상 인용된 논문 수(papers[i])는 결국 (citations.length - i )편 임을 알 수 있다.
- 주어진 입출력예시에서는 citations[i]와 papers[i]가 같아질 때, H-Index가 결정된다.
(2) 문제에 대한 이해 2
- 특이한 케이스에 대해 고려가 필요하다.
<입출력 예시2>
- 마찬가지로 주어진 citations배열을 정렬한 후, 문제에서 요구하는 것을 고려하는 것이다.
- 아래와 같이 citations[i]이 같은 경우들만 존재하는데, 논문의 총 수(papers[i])가 citations[i]보다 작을 경우를 고려해야 한다.
- 아래의 간단한 예시로 고려해보면 결국 papers[i]가 H-Index로 결정된다.
=> 입출력 예시들을 모두 고려하면 결국은 citations[i] >= papers[i] 임을 알 수 있고, H-Index는 papers[i]에 의해 결정된다.