[Python] 프로그래머스 / 해시 / 베스트앨범 / dictionary에서 key에 따른 value 더하기
2024. 3. 4. 08:57ㆍCoding Test/Python
https://school.programmers.co.kr/learn/courses/30/lessons/42579
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(genres, plays):
answer = []
dic1 = {} # genre, index, play 저장
dic2 = {} # genre별 총 play 수
for idx, (genre, play) in enumerate(zip(genres, plays)):
if genre not in dic1:
dic1[genre] = [(idx, play)] # index와 play수를 함께 저장
else:
dic1[genre].append((idx, play))
if genre not in dic2:
dic2[genre] = play
else:
dic2[genre] += play
for (kind, volume) in sorted(dic2.items(), key=lambda x:x[1], reverse=True): # dic2 정렬
for (idx, play) in sorted(dic1[kind], key=lambda x:x[1], reverse=True)[:2]:
answer.append(idx)
return answer
- dic1에 index와 play수 저장. {"classic":[[0,500],[2,150],[3,800]],"pop":[[1,600],[4,2500]]}
- dic2에 genre별 총 play 수 저장
- 딕셔너리에 items() 메서드를 사용해주면 {"key" : value}의 형태를 [(key, value)]의 형태로 만들어 준다.
-> 여기서 x[1]인 value 값을 정렬
총 play 수에 따라 정렬을 한 뒤 해당하는 genre의 dic1에서 play를 sort
[:2]를 통해 가장 많이 재생된 노래 중 2곡만 선정
'Coding Test > Python' 카테고리의 다른 글
| [Python] 프로그래머스 / 스택/큐 / 프로세스 / any() (0) | 2024.03.06 |
|---|---|
| [Python] 프로그래머스 / 정렬 / 가장 큰 수 / 숫자형 리스트 단일 값으로 병합 (0) | 2024.03.06 |
| [Python] 프로그래머스 / 스택/큐 / 올바른 괄호 / pop() / stack (0) | 2024.03.05 |
| [Python] 프로그래머스 / 스택/큐 / 기능개발 / 리스트 순서대로 비교 (0) | 2024.03.05 |
| [Python] 프로그래머스 / 해시 / sort 다중정렬 / 하나의 리스트에서 문자 비교 / 이진수 나타내기 (0) | 2024.03.04 |