알고리즘

파이썬 / 프로그래머스 / 기능개발

snowfield 2020. 1. 19. 02:35

내가 구현한 문제는 다음과 같다.

 

해설 

 

이 문제를 보고 100에서 작업의 진도를 빼고, 뺀 값을 속도로 나눠주고

만약 나머지가 있다면 1을 더하는 식으로 해서 알고리즘을 생각했다.

그리고 나온 배열에 대해서는 앞 순서부터 하여 내가 지나온 배열에 대해서 가장 큰 값 보다 크면 배열을 추가해주고, 그렇지 않으면 해당되는 배열의 값을 더해주는 식으로 했다.

(이렇게 한 이유는 기능을 우선순위대로 처리해줘야하지만, 앞 기능보다 뒷 기능이 빨리 끝나서 배포 준비가 된 기능도 포함을 해줘야 하기 때문이다.)

 

코드

def solution(progresses, speeds):
    answer = []
    test = []
    max = 0
    count = 1

    for i in range(len(progresses)):
    
        temp = 100-progresses[i]
        temp1 = temp//speeds[i]
        if temp % speeds[i] != 0:
            temp1 = temp1+1
        test.append(temp1)
        
    for v in test:
        if max < v:
            count = 1
            answer.append(count)
            max = v
        else :
            count = 1 + count
            answer[len(answer)-1] = count
    
    return answer