-
[프로그래머스] H-indexAlgorithm/1일 1코테 2021. 6. 11. 22:19반응형
https://programmers.co.kr/learn/courses/30/lessons/42747
1차풀이
# 카운트 딕셔너리 생성 d = collections.Counter(c) #정렬 c.sort() # 본인보다 많이 인용됐으면 딕셔너리에 +1 for i in range(len(c)-1): for j in range(i+1, len(c)): if c[i] < c[j]: d[c[i]] += 1 # [2,2,2,2,2]의 답은 2인데 5가 출력되서 급하게 추가한 로직 if len(d) == 1: if d[c[0]] >= c[0]: return c[0] # key= [0,1,3,5,6] / d[key]=[5,4,3,2,1]라 했을때 # 키가 키의 값보다 같거나 커지는 순간 키의 값 리턴 for key in c: if key >= d[key]: return d[key] else: return key
위의 코드를 짰으나 너무 비효율적이라 수정
2차풀이
def solution(c): c.sort() count = [0] * len(c) # 인용횟수가 본인보다 이상이면 +1 for i in range(len(c)-1): for j in range(i, len(c)): if c[i] <= c[j]: count[i] += 1 for i in range(len(c)): if count[i] <= c[i]: return count[i]
c[i]가 h라고 생각하면 이해하기 쉽다
다른 사람 풀이
def solution(citations): citations = sorted(citations) l = len(citations) for i in range(l): if citations[i] >= l-i: return l-i return 0
count가 곧 인덱스...이므로 인덱스로 간단하게 풀이가 가능...!!!! 신기방기
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[🥲 프로그래머스] N으로 표현 (Dynamic Programming) (0) 2021.07.19 [프로그래머스] 2단계 신규 아이디 추천 (1) 2021.06.23 [leetcode] 1. Two Sum (0) 2021.05.04 [leetcode] 819. Most Common Word (0) 2021.04.28 [leetcode] 937. Reorder Log Files (0) 2021.04.28