반응형
아이디어
작업 완료인 100에서 현재까지 진행된 작업(progresses)를 빼면 , 남은 작업 수가 남고 speeds로 나누면 작업 완료까지 걸리는 일 수를 구할 수 있다.
남은 일 수 list를 for문으로 검사하면서, 이번 배포에 포함할 수 있는 작업 수를 카운트하고, pop으로 리스트에서 빼준다.
이 계산을 list가 비워질때까지 진행한다.
Solution1. (내 풀이)
import math
def solution(progresses, speeds):
day = []
answer = []
# 남은 작업 소요일 리스트로 만들기
for i in range(len(progresses)):
day.append(math.ceil((100 - progresses[i]) / speeds[i]))
# list가 비워지면 멈춤
while(len(day)>0):
# 배포 한번에 기본 작업 1개 진행됨
num = 1
# 첫번째 작업에 소요되는 시간
first = day.pop(0)
# 다음 작업과 비교해서 이번 배포에 포함 가능하면 num + 1, 아니면 for문 빠져나오기
# 작업은 순차적으로 완성되기 때문에 만약 1번째, 3번째는 작업이 완료 되어도 2번째가 작업이 완료 안되면 3번쩨도 배포할 수 없음
for i in day:
if i <= first:
num = num + 1
else:
break
# 이번 배포에 포함될 작업 수 만큼 answer 리스트에 추가하고, day 리스트에서 제거하기
answer.append(num)
for i in range(num-1):
day.pop(0)
return answer
처음으로 lv2 문제를 풀어서 뿌듯하다!!!!
반응형
'Today I Learned > Python 문제풀이' 카테고리의 다른 글
프로그래머스 lv1. 음양더하기 (zip 사용해서 간단하게) (0) | 2023.08.10 |
---|---|
[프로그래머스] lv0. 더크게 합치기 (0) | 2023.06.09 |
[프로그래머스] lv2. 프린터 (0) | 2020.11.16 |
[프로그래머스] Lv1. 완주하지 못한 선수 (0) | 2020.11.06 |
[프로그래머스] Lv1. 나누어 떨어지는 숫자 배열 (0) | 2020.10.31 |