문제
https://school.programmers.co.kr/learn/courses/30/lessons/42747#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
def solution(citations):
citations.sort()
answer = 0
for i in range(citations[-1]):
cnt = 0
for j in range(len(citations)):
if citations[j] >= i:
cnt = j
break
if (len(citations) - j) >= i and (j) <= i:
answer = i
return answer
- 조건 그대로 푼 답안이다. i는 h-index가 되고, i보다 큰 인용수가 발생하면 그 지점 이후는 i보다 크기 때문에 h-index가 계산된다. (정렬되었기 때문)
다른 풀이
def solution(citations):
citations = sorted(citations)
l = len(citations)
for i in range(l):
if citations[i] >= l-i:
return l-i
return 0
- 내 풀이를 매우 간략하게 줄인 느낌이다.
- 정렬되었기 때문에 i번째 인용수가 l-i보다 크다면 그 이후는 l-i보다 크다는 말이 되기 때문에 자동적으로 조건이 맞는다.
- (ex. [1,4,5,6] 일 때 3일때부터 해당 h-index보다 커지므로 h-index는 3이된다.)
- h-index를 생각할때, 전체 논문 개수가 4라면 h-index가 4라는 뜻은 4보다 큰 논문 개수가 4개 이상, 나머지가 4개 이하라는 뜻이 된다. 즉 모든 논문이 인용수가 4 이상이라는 뜻, 같은 예시에서 h-index가 3이면 전체 논문 중 하나가 4보다 인용수가 작고 나머지는 다 크다는 뜻이 된다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 가장 큰 수 (0) | 2024.06.10 |
---|---|
프로그래머스 - K번째 수 (0) | 2024.06.10 |
프로그래머스 - 크레인 인형뽑기 게임 (0) | 2024.06.09 |