프로그래머스 - 기능 개발
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42586#
- 배포하는 시간 까지 걸리는 시간을 각 index 별로 구성
- 순차적으로 순회하되, 자신 보다 작은 시간 값들만 배포처리
- 11번 예제 예외 찾느라 오래 걸렸다.
- 작업 진도가 100을 넘으면을 가정하였기에 완벽히 떨어지지 않고 90 → 94 → 98 → 102와 같은 경우의 수를 고려 못하였다.
- 이를 수정하였더니 정답
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def solution(genres, plays):
answer = []
infos = dict()
# 1. init
for i, (genre, play) in enumerate(zip(genres, plays)):
temp = infos.get(genre, list())
temp.append((i, play))
infos[genre] = temp
# 2. 장르 순위
jenre_rank = sorted( [(key, sum(map(lambda x:x[1], infos[key]))) for key in infos], key = lambda x:-x[1] )
# 3. 장르 순위 별 TOP2
# 한개 일 때 예외 처리
for jenre, _ in jenre_rank:
temp = sorted(infos[jenre], key= lambda x:-x[1])
answer.append(temp[0][0])
if len(temp) == 1:
continue
answer.append(temp[1][0])
return answer