[알고리즘] 기능개발(프로그래머스 문제) python 풀이(스택)

기능개발 문제

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

 

[풀이방법]

앞에 작업보다 뒷작업이 먼저 끝나면 앞에 작업이 끝날때 까지 기다려야 하므로 각 progresses 마다 배포일을 구한다음  progress 순서대로 배포일을 스택에 담았을때 다음 배포일이 스택에 있는 배포일보다 작다면 스택에 쌓고 다음 배포일이 스택에 있는 배포일보다 크다면 스택에 있는걸 모드 pop 한다음 배포일을 스택에 넣는다.

 

progresses = [93, 30, 55]

speeds = [1, 30, 5]

배포일은 [7, 4, 9] (배포일식: (100 - progress) / speed)

 

[풀이 코드]

import math
def solution(progresses, speeds):
    days = 0
    stack = []
    answer = []
    
    for i in range(len(progresses)):
        days = math.ceil((100 - progresses[i]) / speeds[i])
    
        if i == 0:
            stack.append(days)
        else:
            if stack[0>= days:
                stack.append(days)
            else:
                answer.append(len(stack))
                stack.clear()
                stack.append(days)
    
    answer.append(len(stack))
    
    return answer
 
 

 

댓글

Designed by JB FACTORY