Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- c++ 5567
- 잔디 기부
- 코드트리 고대 문명 유적 탐사
- texture mapping
- 잔디 기부 캠페인
- pcce 기출문제 10번 공원 풀이
- PCCE
- 티스토리챌린지
- directx 그래픽스
- pccp 기출문제 풀이
- 렌더링 파이프
- pcce 기출문제 풀이
- 고대 문명 유적 탐사
- pcce 기출문제 9번 지폐 접기
- 백준 5567
- python 고대 문명 유적 탐사
- DirectX
- DirectX12
- pcce 기출문제 10번 공원
- boj 5567
- 오블완
- boj 1991
- c++ 1991
- pcce 기출문제 10번 지폐 접기 풀이
- root signature
- 프로그래밍공부
- 수식 복원하기
- gemmasprint
- depth-stencil
- constant buffre
Archives
- Today
- Total
오구의코딩모험
[Python] 베스트앨범 본문
반응형
[코딩테스트 고득점KIT - 해시]
from collections import defaultdict
def solution(genres, plays):
answer = []
# 장르, 재생 횟수 딕셔너리 생성 및 초기화
play_dict = defaultdict(int)
genre_dict = defaultdict(list)
# 장르, 재생 횟수 딕셔너리 값 추가
for idx in range(len(genres)):
play_dict[genres[idx]] += plays[idx]
genre_dict[genres[idx]].append(plays[idx])
# 재생 횟수의 합 딕셔너리 내림차순 정렬 후,
# 재생 횟수가 가장 높은 장르부터 장르 딕셔너리에 대입하여 재생 횟수를 내림차순으로 저장한다.
# 만일 재생 횟수가 하나라면, 하나 2개 이상이라면 2개까지만 리스트에 넣는다.
total = [sorted(genre_dict[item[0]],reverse=True)[:2] if len(genre_dict[item[0]]) >=2 else sorted(genre_dict[item[0]],reverse=True) for item in sorted(play_dict.items(),key = lambda item:item[1],reverse=True)]
# 장르별 재생 횟수가 높은 2가지의 인덱스를 구한다.
# 재생 횟수가 같을 경우 고유번호 순서대로 return
for gen in total:
for idx in gen:
if plays.index(idx) in answer:
answer.append(plays.index(idx,plays.index(idx)+1,len(plays)))
else:
answer.append(plays.index(idx))
return answer
재생 횟수의 합 딕셔너리를 내림차순으로 정렬을 해주지 않아,
테스트 케이스는 통과하지만 제출 케이스에선 대부분 실패로 떴다.
딕셔너리에 있는 리스트 값을 정렬해줄 땐,
key를 사용하여 역순 정렬을 해주도록 하자!
반응형
'프로그래밍 공부 > 프로그래머스' 카테고리의 다른 글
[Python] 같은 숫자는 싫어 (0) | 2022.12.24 |
---|---|
[Python] 위장 (0) | 2022.12.23 |
[Python] 전화번호 목록 (0) | 2022.12.23 |
[Python] 폰켓몬 (0) | 2022.12.14 |
[Python] 완주하지 못한 선수 (0) | 2022.12.14 |
Comments