목차
- 완주하지 못한 선수
- 전화번호 목록
- 위장
- 베스트 앨범
1. 완주하지 못한 선수
def solution(participant, completion):
d = dict()
for x in participant:
d[x] = d.get(x, 0) + 1
for x in completion:
d[x] -= 1
dnf = [k for k, v in d.items() if v > 0]
return dnf[0]
print(solution(["mislav", "stanko", "mislav", "ana"],
["stanko", "ana", "mislav"]))
2. 전화번호 목록
def solution(phone_book):
for i in range(len(phone_book)):
for j in range(i+1, len(phone_book)):
if phone_book[i].startswith(phone_book[j]) or phone_book[j].startswith(phone_book[i]):
return False
return True
print(solution(["119", "97674223", "1195524421"]))
3. 위장
def solution(clothes):
d = {}
for i in clothes:
d[i[1]] = d.get(i[1], 1)+1
result = 1
for v in d.values():
result *= v
return result - 1
print(solution([["yellow_hat", "headgear"], [
"blue_sunglasses", "eyewear"], ["green_turban", "headgear"]] ))
4. 베스트 앨범
다음과 같은 구조를 가지게 된다.
{
'장르이름': {
't': 전체 재생 시간
'l': [노래정보리스트, {'v': 재생시간, 'i': 고유번호}]
}
}
def solution(genres, plays):
d = {}
for i, x in enumerate(genres):
d[x] = d.get(x, {'t': 0, 'l': []})
d[genres[i]]['l'].append({'v': plays[i], 'i': i})
d[genres[i]]['t'] += plays[i]
d = list(d.values()) # 정렬을 위해 리스트로 변형
d = sorted(d, key=lambda k: k['t'], reverse=True)
answer = []
for i in range(len(d)):
v = d[i]['l']
v = sorted(v, key=lambda k: k['v'], reverse=True)
for j in range(2 if len(v) >= 2 else len(v)):
answer.append(v[j]['i'])
return answer
print(solution(["classic", "pop", "classic",
"classic", "pop"], [500, 600, 150, 800, 2500]))
참고자료 [프로그래머스]https://programmers.co.kr/learn/challenges