728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42747
코드
def solution(citations):
citations.sort(reverse=True)
h_index= 0
for i, citationin in enumerate(citations):
h_index = max(h_index, min(i+1, citationin))
return h_index
다른 사람 코드
def solution(citations):
citations.sort(reverse=True)
answer = max(map(min, enumerate(citations, start=1)))
return answer
def solution(citations):
citations = sorted(citations)
l = len(citations)
for i in range(l):
if citations[i] >= l-i:
return l-i
return 0
접근법
먼저 H-Index에 대해서 알아야 더 쉽게 풀 수 있는 문제였다
이 문제의 예시를 이용하여 계산하는 방법을 알아보겠습니다. 먼저 [3, 0, 6, 1, 5] 이라는 리스트가 있고, H-Index 계산을 하기 위해서 먼저 내림차순으로 정렬을 해주어야 합니다. 내림차순으로 정렬하면 [6, 5, 3, 1, 0] 의 순서가 됩니다. 여기서 리스트n 번째 값이 최초로 n을 넘지 않을 때, n-1의 값이 H-Index 값이 됩니다. 이것을 표로 나타내면 아래와 같습니다.
https://liveloper-jay.tistory.com/140
배운 점
다른 사람 코드에서 enumerate를 start=1을 사용하는 것이 신기했었다
enumrate에서 start=1로 해주면 index 시작은 1이다
for i, v in enumerate(a, start = 1):
'자료구조&알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 모의고사 - 완전탐색 (0) | 2024.02.15 |
---|---|
[Python] 최소 직사각형 - 완전탐색 (0) | 2024.02.14 |
[Python] 가장 큰 수 - 정렬 (0) | 2024.02.13 |
[Python] 이중우선순위 큐 - 힙 (0) | 2024.02.12 |
[Python] K번째 수 - 정렬 (0) | 2024.02.12 |