[7/7] 기능개발

이경준·2021년 7월 7일
0

코테

목록 보기
64/140
post-custom-banner

레벨2 문제

내 코드

import math
import collections
def solution(progresses, speeds):
    answer = []
    speeds = collections.deque(speeds)
    
    while progresses:
    
        num = 100 - progresses[0]
        up = math.ceil(num/speeds[0])
        progresses = collections.deque([progresses[i] + (up * speeds[i]) for i in range(len(progresses))])
        cnt = 0
        
        while True:
            if (progresses[0] < 100):
                break
            progresses.popleft()
            speeds.popleft()
            
            cnt += 1
            if not progresses:
                break
        answer.append(cnt)
    return answer

로직

  1. 100에서 해당 작업의 진도를 빼고, 그것을 작업속도로 나눈다. 이것을 speeds에 곱해서 progresses에 더해준다.
  2. while문을 돌려서 progress가 100 이상일 때까지 계속 삭제해주고, 삭제한 만큼 cnt를 증가시킨다. while문이 끝나면 cnt를 answer 리스트에 추가한다. (100 미만이거나, 리스트가 없으면 종료한다.)

효율적인 코드

코드 수정은 내일

피드백

  • 큐 자료구조를 사용할 때는 deque를 사용하자.
profile
The Show Must Go On
post-custom-banner

0개의 댓글