알고리즘

[프로그래머스 lv 2] 기능개발.py

파뱁 2022. 2. 11. 21:14
728x90

<문제 설명>

https://programmers.co.kr/learn/courses/30/lessons/42586

 

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

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

programmers.co.kr

기능은 100%가 되어야 서비스에 반영할 수 있고, 기능마다 개발 속도는 다르다. 만약 뒤에 있는 기능이 앞의 기능 보다 먼저 개발된다면 앞기능이 배포될 때 함께 배포된다.

각 배포마다 몇개의 기능이 배포되는지를 반환하면 된다.

 

입출력의 예는 다음과 같다.

progresses speeds return
[93, 30, 55] [1, 30, 5] [2, 1]
[95, 90, 99, 99, 80, 99] [1, 1, 1, 1, 1, 1] [1, 3, 2]

 

<문제 풀이 아이디어>

큐에 현재 작업 진도와 속도를 반영해서 남은 일자를 저장한다.

이후 앞의 일자가 뒤의 일자보다 느리면 임시로 1을 더해줌으로서 앞 기능이 배포될때 같이 배포될 수 있도록 한다.

이렇게 뒤의 일자를 모두 비교한 후에 몇 개를 한번에 배포해야 하는지를 answer에 append 해서 리턴한다.

 

<문제 풀이 코드>

import math
def solution(progresses, speeds):
    answer = []
    queue = []
    for i in range(len(progresses)):
        value = math.ceil((100-progresses[i])/speeds[i])
        queue.append(value)
        print(value)
    start = queue[0]
    tmp = 0    
    for i in range(len(progresses)):
        if(queue[i]<=start):
            tmp += 1
        else:
            answer.append(tmp)
            start = queue[i]
            tmp = 1
    answer.append(tmp)    
            
        
    return answer

채점 결과

728x90
반응형