Dictionary 사용
participant 이름 : 인원 세팅 ==> completion에서 한명씩 제거
def solution(participant, completion):
parDict = {}
for par in participant:
parDict[par] = parDict.get(par,0) + 1
#print(parDict)
for com in completion:
parDict[com] = parDict[com]-1
for key in parDict.keys():
if parDict[key]!=0:
return key
phone_book 정렬 -> 오름차순으로 정렬되니 앞뒤로 접두사 비교하면 된다!
def solution(phone_book):
answer = True
phone_book.sort()
idx = 0
while idx < len(phone_book)-1:
if phone_book[idx+1][:len(phone_book[idx])] == phone_book[idx]:
return False
else:
idx += 1
return answer
def solution(phone_book):
answer = True
phone_book.sort()
# phone_book = sorted(phone_book)
idx = 0
for prev,nxt in zip(phone_book, phone_book[1:]):
if(nxt.startswith(prev)):
return False
return answer
category별로 갯수를 세서 dict에 넣음
=> (갯수+1)*(갯수+1)...*(갯수+1)-1 이 0을 제외한 약수의 개수임을 활용
def solution(clothes):
answer = 1
categories = {}
for item,category in clothes:
categories[category] = categories.get(category,0) + 1
for key in categories.keys():
answer *= categories[key] + 1
return answer - 1
def solution(clothes):
from collections import Counter
from functools import reduce
cnt = Counter([kind for name, kind in clothes])
answer = reduce(lambda x, y: x*(y+1), cnt.values(), 1) - 1
return answer
totalPlayPerGenre에는 genre:play시간의합
playListPerGenre에는 genre: [play시간, 번호] 리스트
1. totalPlayPerGenre에서 play시간의합 내림차순으로 정렬
2. 정렬된 genre를 가지고 playListPerGenre에서 play시간 내림차순 & 번호 오름차순 정렬
3. min(2,len(sortedPlay)) 를 answer에 넣기
def solution(genres, plays):
answer = []
totalPlayPerGenre = {}
playListPerGenre = {}
for idx,gp in enumerate(zip(genres, plays)):
totalPlayPerGenre[gp[0]] = totalPlayPerGenre.get(gp[0], 0) + gp[1]
if gp[0] not in playListPerGenre.keys():
playListPerGenre[gp[0]] = [[gp[1],idx]]
else:
playListPerGenre[gp[0]].append([gp[1],idx])
sortedGenre = sorted(totalPlayPerGenre.items(), key=(lambda x: x[1]), reverse=True)
for gp in sortedGenre:
sortedPlay = sorted(playListPerGenre.get(gp[0]),key=(lambda x : (-x[0],x[1])))
for play,idx in sortedPlay[:min(2,len(sortedPlay))]:
answer.append(idx)
return answer
def solution(genres, plays):
answer = []
d = {e:[] for e in set(genres)}
for e in zip(genres, plays, range(len(plays))):
d[e[0]].append([e[1] , e[2]])
genreSort =sorted(list(d.keys()), key= lambda x: sum( map(lambda y: y[0],d[x])), reverse = True)
for g in genreSort:
temp = [e[1] for e in sorted(d[g],key= lambda x: (x[0], -x[1]), reverse = True)]
answer += temp[:min(len(temp),2)]
return answer