각 배포마다 몇 개의 기능이 배포되는지를 반환
(단, 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있으며
이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다.)
- 각 기능별로 "(100-현재 작업의 진도)/개발 속도" 를 계산하여 배포까지 남은 작업일수를 arr 리스트에 저장
(단, 일의 자리까지 올림)- A 기능이 배포될 때 바로 뒤에 있는 B 기능도 배포가 가능할 경우:
(A 기능의 남은 작업일수 >= B 기능의 남은 작업일수)
n에 1을 더해주어 함께 배포 가능한 기능의 개수를 계산해 answer 리스트에 원소를 추가하고자 한다.
def solution(progresses, speeds):
answer = []
arr = []
for i in range(len(progresses)): # 기능별 남은 작업일수 계산
a = 100-progresses[i]
if a % speeds[i] == 0:
a = a//speeds[i]
else:
a = a//speeds[i] + 1
arr.append(a)
chk = arr[0]
del arr[0]
n = 1
while len(arr)!=0:
if chk >= arr[0]:
del arr[0]
n += 1
else:
answer.append(n)
chk = arr[0]
del arr[0]
n = 1
answer.append(n) # 마지막 배포의 기능 개수 추가는 반복문 안에서 수행 X
return answer
def solution(progresses, speeds):
Q=[]
for p, s in zip(progresses, speeds):
if len(Q)==0 or Q[-1][0]<-((p-100)//s): # 첫번째 기능 or 함께 배포 불가능한 경우
Q.append([-((p-100)//s),1]) # [남은 작업일수, 기능 개수] 원소 추가
else:
Q[-1][1]+=1 # 함께 배포 가능한 경우, 기능 개수 1 추가
return [q[1] for q in Q] # 각 배포별 기능 개수
append(x)
: 마지막 자리에 원소 x 추가del list[x]
: list에서 x 위치에 있는 원소 삭제zip()
: 각각의 원소를 순서대로 묶어 튜플 형태로 출력