programmers.co.kr/learn/courses/30/lessons/42579
def solution(genres, plays):
# D: {'classic': [(500, 0), (150, 2), (800, 3)], 'pop': [(600, 1), (2500, 4)]}
D = {g: [] for g in set(genres)}
N = len(genres)
for g, p, i in zip(genres, plays, range(N)):
D[g].append((p, i))
# C: ['pop', 'classic']
# C = sorted(D, key=lambda k: sum(map(lambda x: x[0], D[k])), reverse=True)
C = sorted(D, key=lambda k: sum([p for p, i in D[k]]), reverse=True)
# ans: [4, 1, 3, 0]
ans = []
for g in C:
a = sorted(D[g], key=lambda x: (-x[0], x[1]))
# a = list(map(lambda x: x[1], a))
a = [i for p, i in a]
ans += a[: min(len(a), 2)]
return ans
res = solution(["classic", "pop", "classic", "classic", "pop"], [500, 600, 150, 800, 2500])
print(res)
'programmers 알고리즘 > 구현' 카테고리의 다른 글
기능개발 (스택/큐) (0) | 2020.11.04 |
---|---|
주식가격 (스택/큐) (0) | 2020.11.03 |
위장 (해시) (0) | 2020.11.02 |
전화번호 목록 (해시) (0) | 2020.11.02 |
완주하지 못한 선수 (해시) (0) | 2020.11.02 |