본문 바로가기

알고리즘/프로그래머스

[프로그래머스][Python] 기능개발

문제를 정리해보자.

 

1. 각 기능은 진도가 100%일 때, 서비스에 반영한다.

2. 각 기능의 개발 속도는 모두 다르다.

3. 뒤에 개발이 먼저 완료되어도, 앞에 기능이 배포될 때 함께 배포해야 한다.

배포 순서대로 작업 진도 적힌 배열 : progresses
각 작업의 개발 속도 적힌 배열 : speeds

문제는 '배포마다 몇 개의 기능이 배포되는지' 찾는 것이다.

 

 

def solution(progresses, speeds):
    answer = []

    while progresses:
        progresses = list(map(lambda x1, x2: x1 + x2, progresses, speeds))

        result = 0
        while progresses:
            if 100 <= progresses[0]:
                progresses.pop(0)
                speeds.pop(0)

                result += 1
                
            else:
                break

        if result:
            answer.append(result)

    return answer


print(solution([95, 90, 99, 99, 80, 99], [1, 1, 1, 1, 1, 1]))

 

 

1. 작업 진도 리스트 = 각 작업 진도 + 각 개발 속도

 

2. 작업 진도 리스트의 index 0번를 확인한다.

2-1. 진도가 100%라면, index 0번째를 pop하고 넘어간다. 3번으로 간다.

2-2 . 진도가 100%가 아니라면, 1번으로 간다.

 

3. 작업 진도 리스트에 남은 것이 있다면, 1번으로 간다. (없다면 종료.)

 

시간 복잡도는 O(N^2)이다.