일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Jupyter notebook
- 코크리
- AIFFEL
- 프로그래머스
- 사회조사분석사2급
- HookNet
- vscode
- docker
- ssh
- airflow
- Decision Boundary
- Pull Request
- 기초확률론
- 백신후원
- docker attach
- CellPin
- 오블완
- IVI
- WSSS
- docker exec
- GIT
- numpy
- 도커
- aiffel exploration
- logistic regression
- cs231n
- Multi-Resolution Networks for Semantic Segmentation in Whole Slide Images
- 티스토리챌린지
- cocre
- 히비스서커스
Archives
- Today
- Total
히비스서커스의 블로그
[Programmers] 베스트앨범 본문
728x90
프로그래머스 코딩테스트 문제 중 해시를 이용해야하는 문제 베스트앨범에 대해 파이썬으로 해결한 풀이와 해설입니다.
문제링크
https://programmers.co.kr/learn/courses/30/lessons/42579
solution
def solution(genres, plays):
hash = dict()
for i in range(len(genres)):
if genres[i] in hash:
hash[genres[i]].append([i, plays[i]])
else:
hash[genres[i]] = [[i, plays[i]]]
song = sorted(hash.values(), key = lambda x : -sum([j[1] for j in x]))
answer = []
for genre in song:
answer.append(max(genre, key = lambda x: x[1])[0])
genre.remove(max(genre, key = lambda x: x[1]))
try:
answer.append(max(genre, key = lambda x: x[1])[0])
except:
pass
return answer
해설
저는 크게 2파트로 나누어 해결하였습니다. 먼저, 속한 노래가 많이 재생된 장르 순으로 정리된 해시를 만드는 과정과 장르 내에서 많이 재생된 2곡의 고유번호를 넣는 과정입니다.
속한 노래가 많이 재생된 순으로 정리된 해시를 만드는 과정
1. hash라는 딕셔너리를 만듭니다.
2. for 문을 돌면서 key값은 genre이며 value값은 첫번째 원소가 고유번호, 두번째 원소가 재생횟수인 리스트를 넣어주고 겹칠 시에 append하여줍니다.
3. hash를 속한 노래가 많이 재생된 순으로 정렬된 리스트인 song을 만들기 위해 sorted를 쓰되, lambda를 이용하여 hash.values()의 두번째 원소인 재생횟수를 토대로 합니다.
장르 내에서 많이 재생된 2곡의 고유번호를 넣는 과정
1. answer라는 빈 리스트를 만든 후 song 안에서 for문을 돌립니다.
2. genre내에서 재생횟수가 가장 큰 리스트의 고유번호를 뽑아 answer에 추가하고 genre에서는 지워줍니다.
3. 만약 genre내에 한 곡 밖에 없을 시 오류가 나는 것을 방지하기 위해 try & except문을 활용하여 위와 같은 방법을 한 번 더 진행해줍니다.
-히비스서커스-
728x90
'Theory > Algorithm' 카테고리의 다른 글
[Programmers] 위장 (0) | 2021.09.02 |
---|---|
[Algorithm] 해시법 (0) | 2021.08.26 |
[Programmers] 기능개발 (0) | 2021.08.21 |
[Programmers] 더 맵게 (2) | 2021.08.20 |
[Algorithm] 선형검색 이진검색 (0) | 2021.02.04 |