https://school.programmers.co.kr/learn/courses/30/lessons/42579#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
1. dic에는 key: genres, value=plays 형태로 장르별 재생수를 합산하다
2. gen에는 [인덱스, 장르, 플레이 수] 를 삽입한다, 인덱스=고유번호
3. dic을 재생수로 정렬하고 탐색한다
4. gen도 재생수로 정렬한다
5. 장르별로 돌면서 재생수가 많은 두 개를 찾는다
6. 재생수가 많은 장르별로 돌고있고 플레이수, 인덱스 순으로 정렬되어있어서 순서는 신경안써도 된다.
def solution(genres, plays):
answer = []
dic={}
gen=[]
for i in range(len(plays)):
gen.append([i,genres[i],plays[i]])
if genres[i] not in dic:
dic[genres[i]]=plays[i]
else:
dic[genres[i]]+=plays[i]
dic=sorted(dic.items(), key=lambda x : x[1],reverse=True)
gen=sorted(gen,key=lambda x:(x[2]),reverse=True)
for key,_ in dic:
cnt=0
for j in gen:
if cnt==2:
break
if key==j[1]:
answer.append(j[0])
cnt+=1
return answer
배운 점
1. key 여러개로 정렬할 때 reverse를 각각 설정할 수는 없다
2. 우선순위를 설정하고 키 하나씩 정렬하면 해결된다
3. reverse는 단일 값만 지정
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 파이썬 문제풀이 - 점프와 순간 이동 (0) | 2023.05.13 |
---|---|
[프로그래머스] 파이썬 문제풀이 - 점프와 순간 이동 (0) | 2023.05.10 |
[프로그래머스] 파이썬 문제풀이 - 예상 대진표 (0) | 2023.05.09 |
[프로그래머스] 파이선 문제풀이 - 기지국 설치 (0) | 2023.05.08 |
[프로그래머스] 파이썬 문제풀이 - 숫자 게임 (0) | 2023.05.06 |
댓글