알고리즘/programmers
20210316_코테공부
jungeun960
2021. 3. 16. 17:32
프로그래머스 - 해시
# 위장 (Level2)
def solution(clothes):
answer = 1
dic = {}
for name, kind in clothes:
if kind in dic:
dic[kind] +=1
else: dic[kind] = 1
for i in dic.values():
answer *=(i+1)
return answer-1
# 베스트 앨범 (Level3)
- Point. 딕셔너리, 딕셔너리 정렬
- 많이 재생된 장르 먼저 수록
- 장르 내에서 많이 재생된 노래 먼저 수록
- 장르별로 두 개씩(하나만 있으면 하나만)
def solution(genres, plays):
answer = []
dic = {} # 장르 : (재생횟수, 고유번호)
dic_count = {} # 장르별 재생횟수
for i, (g,p) in enumerate(zip(genres, plays)):
if g in dic:
dic[g].append((p,i))
dic_count[g] += p
else:
dic[g] = [(p,i)]
dic_count[g] = p
print(dic)
print(dic_count)
# 많이 재생된 장르순 정렬
sorted_dic = sorted(dic_count.items(), key=lambda x: x[1], reverse=True)
print(sorted_dic)
for key in sorted_dic: # key값에 ('pop', 3100)
play_list = dic[key[0]] #key[0]으로 해야 pop나옴
print(play_list)
# 많이 재생된 노래순 정렬
play_list = sorted(play_list, key = lambda x : x[0], reverse=True)
print(play_list)
for i in range(len(play_list)): # 두개만 뽑아오기
if i == 2:
break
answer.append(play_list[i][1])
return answer
반응형