-
[💕 프로그래머스] H-index (PYTHON)Algorithm/1일 1코테 2020. 11. 14. 18:12반응형
QUESTION.
programmers.co.kr/learn/courses/30/lessons/42747
ANSWER.
from collections import Counter # 딕셔너리를 만들기 위한 COUNTER def solution(c): c.sort() # 정렬 d = Counter(c) # c를 counter로 만들어준다. for i in c: # c에서 하나씩 출력 for j in d: # d에서 하나씩 출력 if i > j: # i가 j보다 크면 d[j] += 1 # +1 # 여기까지 해주면 i보다 인용횟수가 높은 수들이 몇개인지 저장된다. items = list(d.values()) keys = list(d.keys()) if len(items) == 1: # 만약 items가 1이면 (모두 똑같은 인용횟수) for i, v in d.items(): if i > v: # 인용횟수가 논문 갯수보다 크면 return v # 논문 갯수를 return else: # 반대면 return i # 인용횟수를 return min_idx = 9999 key = 0 # d를 살펴본 결과 기준 인덱스는 i < v 인 마지막 값의 다음 값이었다. 그러므로 i < v 되는 마지막 순간을 구한다. for i, v in d.items(): # if i < v: key = i # key에 저장 if key == 0: # 만약 key가 0이면 i<v 되는 순간이 없으므로 그대로 return return items[0] # key의 그 다음 인덱스의 값을 구하기 위한 과정 index = keys.index(key) if index == len(keys)-1: return d[index] else: a = keys[index+1] return d[a]
ANOTHER 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
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[🤷♀️ 백준] 2156번. 포도주 시식 (0) 2020.11.16 [🤷♀️ 백준] 9465번. 스티커 (0) 2020.11.15 [💕 백준] 10825번. 국영수 (0) 2020.11.14 [💕 백준] 10814번. 나이순 정렬 (0) 2020.11.14 [💕 백준] 11650번. 좌표 정렬하기 (0) 2020.11.14