[프로그래머스] 기능개발Lv.2

나의 풀이

def solution(progresses, speeds):
    answer = []
    time, count = 0, 0
    while progresses:
        if progresses[0] + time * speeds[0] >= 100:
            count += 1
            progresses.pop(0)
            speeds.pop(0)
        else:
            if count != 0:
                answer.append(count)
                count = 0
            time += 1
    answer.append(count)
    return answer
  • progresses가 비어있지 않은 동안 만약 progresses의 첫 번째 값 + (time * speeds의 첫 번째 ) 가 100 이상일 경우 count를 1 증가시켜주고, progresses와 speeds의 첫 번째 값을 제거시킨다.
  • 100 미만이라면 그리고 만약 count가 0이 아닐 경우, 즉 하나라도 배포가 될 수 있다면 count를 answer 리스트에 추가시키고, count를 초기화한다. time은 100 미만일 경우 무조건 1씩 증가시킨다.
  • progresses가 비어서 반복이 종료되었지만 모든 값들이 한꺼번에 배포가 가능하다면 pop만 하다가 반복이 종료된다. 또는 마지막 값이 count += 1을 하고 종료되는 수가 있기 때문에 마지막에 answer에 count를 추가해주고 리턴한다.

0개의 댓글