문제이해
가장많이 재생된 장르부터 2개씩 출력
장르에서는 많이재생된순으로
재생된수같으면 고유번호가 낮은순으로 출력
해시맵
1. [장르이름,재생횟수,고유번호] 를 담은 arr배열생성
2. 재생횟수로는 내림차순, 고유번호순으로는 오름차순하기
3. {'장르이름':재생횟수} 이런식의 해쉬맵 생성 -> 재생횟수높은거부터 나오도록 내림차순
4. 해쉬맵과 arr로 비교해서 두개씩 고유번호 출력하기
genres = ["classic", "pop", "classic", "classic", "pop"]
plays = [500, 600, 150, 800, 2500]
answer = []
arr = []
hashmap = {} # 장르이름이 키이고 재생횟수가 value인 해쉬맵생성
for i in range(len(genres)):
arr.append([genres[i], plays[i], i])
arr = sorted(arr,key=lambda x: (-x[1],x[2]))
# 많이재생된순으로 내림차순, 고유번호순으로 오름차순
# print(arr) [['pop', 2500, 4], ['classic', 800, 3], ['pop', 600, 1], ['classic', 500, 0], ['classic', 150, 2]]
for i in arr:
if i[0] not in hashmap:
hashmap[i[0]] = i[1]
else:
hashmap[i[0]] += i[1]
# print(hashmap) {'pop': 3100, 'classic': 1450} # 재생횟수 많은순으로 정렬하기
hashmap = sorted(hashmap.items(),key=lambda x : x[1],reverse=True)
# print(hashmap) [('pop', 3100), ('classic', 1450)]
for i in hashmap:
cnt = 0
for j in arr:
if i[0] == j[0]:
cnt += 1
if cnt > 2:
break
else:
answer.append(j[2])
print(answer)
* 오름차순 lambda 다시보기 *