Kimuksung
Kimuksung 안녕하세요. 분산처리에 관심이 많은 생각하는 주니어 Data Enginner입니다.

프로그래머스 - 기능 개발

문제 : 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