programmers.co.kr/learn/courses/30/lessons/42747
그냥 조건에 맞게 구현만 했다.
정렬로 풀라고 했으나, 굳이 정렬을 쓰지 않아도 풀수 있는 문제이다.
그냥 직관적으로 풀었는데 통과해서 기분이 많이 좋았다.
'''
논문 n편 중에
cond1. h번 이상 인용된 논문이 h편 이상이고,
cond2. 나머지 논문이 h번 이하 인용이면
h의 최대값이 과학자의 h-Index
[3,0,6,1,5] 이면
5편중에, 3편이 3번이상 인용.
2편은 3회이하 인용.
'''
def countValid(arr):
return len(arr) - arr.count(-1)
def solution(citations):
answer = 0
n = len(citations)
for h in range(n+1):
arr = [x if x>=h else -1 for x in citations]
cond1 = countValid(arr) >= h
arr2 = [citations[i] if a==-1 else -1 for i,a in enumerate(arr)]
cond2 = countValid(arr2) <= (n-h)
if(cond1 and cond2 and answer < h):
answer = h;
print(h)
return answer
print(solution([3, 0, 6, 1, 5]))
'개발 > 알고리즘' 카테고리의 다른 글
정렬에 관하여 (0) | 2020.09.19 |
---|---|
그리디 알고리즘이란 무엇인가? (0) | 2020.09.17 |
[백준] 계단 오르기 (0) | 2020.09.05 |
[Programmers] 큰 수 만들기 (0) | 2020.09.02 |
[Programmers] 스킬트리 (0) | 2020.09.01 |