def solution(progresses, speeds):
answer = []
remain = []
for p in range(len(progresses)) :
temp = (100 - progresses[p])
if temp % speeds[p] == 0 :
remain.append(temp // speeds[p])
else :
remain.append(temp // speeds[p] +1)
idx = remain[0]
cnt = 1
for r in range(1, len(remain)) :
if idx < remain[r] :
answer.append(cnt)
cnt = 1
idx = remain[r]
else :
cnt += 1
if r == len(remain)-1 :
answer.append(cnt)
return answer
일단 입력으로 들어온 진행 속도 고려해서
작업별로 남은 일수를 계산해서 remain 에 추가해줌.
그리고 idx 는 첫 작업의 남은 일수로 초기화해줬고,
cnt 는 한 번에 배포하는 작업의 개수를 나타냄.
배포 작업은 무조건 앞에 있는 인덱스부터 차례대로 해야되기 때문에
두 번째 작업부터 돌면서 남은 일수를 비교해줬다
idx < remain[r]
'배포할 차례의 작업의 남은 일수 < 이후 작업의 남은 일수' 라면
그냥 현재 작업까지만 배포하면 되고,
그게 아니라면 이후 작업들까지 모아서 한 번에 배포해야 되니까
그냥 cnt 만 계속 1 증가시켜주고 다시 for문으로 돌아가서 비교할 수 있도록 해줌.
그리고 여기서 주의할 점은 r 이 마지막 인덱스라면
그것도 배포해줘야 하니까 따로 아래에 if 문 적어둔 거 !!
'알고리즘' 카테고리의 다른 글
[프로그래머스 Lv1] 소수 만들기 (Python) (0) | 2022.07.06 |
---|---|
[프로그래머스 Lv1] 예산 (Python) (0) | 2022.07.02 |
[프로그래머스 Lv2] 카펫 (Python) (0) | 2022.07.02 |
[프로그래머스 Lv2 - 2019 KAKAO BLIND RECRUITMENT] 오픈채팅방 (Python) (0) | 2022.07.02 |
[프로그래머스 Lv1 - 2018 KAKAO BLIND RECRUITMENT] 다트 게임 (Python) (0) | 2022.07.01 |