[프로그래머스] level2 - 기능개발 풀이

ehye·2020년 9월 9일
0
post-thumbnail

프로그래머스 : 기능개발 (level2)

해답 포인트

  • progresses에서,
    (100-progresses[i]) >=(100-progresses[i+1]) 인 것을 골라낸다
import math

class Work:
    def __init__(self):
        self.progress = 0
        self.speed = 0

def solution(progresses, speeds):
    works = []
    finish = []
    
    # 작업속도와 진도를 하나의 work로 만들고
    for idx,item in enumerate(progresses):
        w = Work()
        w.progress = item
        w.speed = speeds[idx]
        works.append(w)

    while works:
    	# 항상 맨 앞의 요소가 기준
	# 맨 앞 요소가 100에서 얼마나 남았는 지가 기준
        temp = [works[0]]
        criteria = math.ceil((100 - works[0].progress) / works[0].speed)
		
        for idx,work in enumerate(works):
        
        # 맨 앞의 요소는 기준이므로, 그 뒤의 작업부터 본다
            if idx !=0:
            
            	#low_grade = 뒤에 남은 작업 하나의 진도
                low_grade = math.ceil((100 - works[idx].progress) / works[idx].speed)
                
                # 기준보다 작을 때만 담도록
                if criteria >= low_grade:
                    temp.append(work)
                    
                # 기준보다 크면 맨 앞의 요소만 끝낼 수 있다
                # 즉, 맨 앞의 일이 뒤의 모든 일보다 빨리 끝난다
                else:
                    break
                    
        if len(temp) == 1:
            works.pop(0)
        else:
            for idx in range(len(temp)):
            	# works.pop(idx)가 아님을 유의
                works.pop(0)

        finish.append(len(temp))

    return finish
profile
*잘못된 점이 있으면 언제든지 알려주세요 =)

0개의 댓글