https://school.programmers.co.kr/learn/courses/30/lessons/42579
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이번 문제는 해시 문제였다.
딕셔너리를 이용하여 원하는 정보를 담고, lambda를 이용해서 정렬해주면서 풀었다.
def solution(genres, plays):
# 답을 넣을 리스트
answer = []
# 각 장르별 [인덱스, 재생 수]
dic = {}
# 각 장르별 합친 재생 수
count = {}
# 딕셔너리 채우기
for i in range(len(plays)):
if genres[i] not in dic:
dic[genres[i]] = []
for i in range(len(plays)):
dic[genres[i]].append([i, plays[i]])
if genres[i] not in count:
count[genres[i]] = plays[i]
elif genres[i] in count:
count[genres[i]] += plays[i]
# 각 장르별 합친 재생 수 기준으로 내림차순 정렬
temp = []
for a, b in count.items():
temp.append([a, b])
temp = sorted(temp, key=lambda x: -x[1])
for a, b in temp:
# 해당하는 장르의 [인덱스, 재생 수] 가져와서 정렬
te = sorted(dic[a], key=lambda x: (-x[1], x[0]))
co = 0
# 2개만 담고, 2개보다 짧으면 그만큼 담기
for j in range(len(te)):
if co == 2:
break
answer.append(te[j][0])
co += 1
return answer
- 여기서 내가 놓쳤던 점은 각 장르별 곡이 2개 보다 적을 수 있다는 점이었다. 이 부분을 처리해줘야한다.
요즘 코딩 문제 푸는게 재밌다!ㅎㅎ
'👩💻 코테 공부 > 코테 공부' 카테고리의 다른 글
| [코테 - py] 과제 진행하기 (0) | 2024.07.29 |
|---|---|
| [코테 - py] 테이블 해시 함수 (0) | 2024.07.27 |
| [코테 - py] 문자열 압축 (0) | 2024.07.27 |
| [코테 - py] 백준 14890번 경사로 (0) | 2024.07.26 |
| [코테 - py] 숫자 문자열과 영단어 (0) | 2024.07.24 |