호기심 많은 분석가

[프로그래머스] 스택_큐 - 기능개발 (Python) 본문

Coding/Coding Test & Algorithm

[프로그래머스] 스택_큐 - 기능개발 (Python)

DA Hun 2021. 6. 28. 14:38
 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

import math
def solution(progresses, speeds):
    answer = []
    while progresses :
        result = 0
        time = math.ceil((100-progresses[0])/speeds[0])
        progresses = [progresses[i]+time*speeds[i] for i in range(len(progresses))]
        for i in range(len(progresses)) :
            if progresses[i] >= 100 :
                result += 1
            else : break
        answer.append(result)
        for _ in range(result) :
            progresses.pop(0)
            speeds.pop(0)
    return answer

 여러 번 풀면서도 시간이 오래 걸리곤 했던 친구다. 조건이 여러 가지라 구현하는데 시간이 소요됐다.

우선 첫 작업이 끝나기 전까지는 다음 작업들도 배포될 수 없으므로, 첫 작업이 끝나는 데 걸리는 시간을 구한다. 그다음 작업이 끝나지 않은 원소가 나올 때까지 for문을 돌려주고 몇 개의 원소를 거쳤는 지를 result에 저장하여 answer에 append 해준다. 이미 작업이 끝난 원소들은 다룰 필요가 없으므로 pop을 이용해서 제거해줌. 이때 speed도 반드시 제거해줘야한다. (이거 때문에 조금 애먹음)

 그 작업들을 progresses의 원소가 없어질 때까지 반복하면 문제가 해결됨을 볼 수 있다.