[CodingTest] 기능개발

정재원·2021년 7월 27일

문제

내 풀이

def solution(progresses, speeds):
   
    remains = [100 - i for i in progresses]
    
    function_num = len(progresses)
    work_days_ls = []
    for i in range(function_num):
        date_quotient = remains[i] // speeds[i]
        date_remainder = remains[i] % speeds[i]
        
        if date_remainder == 0 :
            work_days_ls.append(date_quotient)
            
        else:
            work_days_ls.append(date_quotient+1)
    

    init_value = work_days_ls[0]

    cnt = 0
    answer = []
    for i in range(len(work_days_ls)):

        if work_days_ls[i] - init_value <= 0:
            cnt += 1
                
        else :
            answer.append(cnt)
            init_value = work_days_ls[i]
            cnt = 1
            
    else :
        answer.append(cnt)
                
    return answer

필요한 작업 일수를 담고 있는 배열 work_days_ls를 먼저 구했다.
그 후 한번에 배포 되는 기능의 개수를 구하기 위해 기준점이 되는 값 init_value를 설정하였다. 이 init_value를 기존 work_days_ls의 성분에 뺐을 때 음수이면 init_value에 대응되는 기능과 함께 배포되는 기능인 것을 찾아냈다. 양수이면 init_value는 갱신된다. 왜냐하면 양수일 경우 그 기능은 이전 init_value에 해당하는 기능보다 더 작업일수가 많이 필요한 기능으로 함께 배포가 될 수 없어서 새로운 기준점이 필요하기 때문이다. for 루프가 다 돌았을 때, 마지막날 배포되는 기능이 제대로 answer에 들어가기 전에 for문에 else 구문을 추가해줬다.

profile
생각합니다.

0개의 댓글