처음엔 변수 p와 s를 그대로 사용하려고 접근했다.
하지만 실패했고, 구글링을 통해 힌트로 작업일수 를 얻었다.
math.celi()을 통해 구현했다.[7, 3, 9] 반환deque 함수를 통해 큐로 생성from collections import deque
import math
def solution(p, s):
# p = [93, 30, 55]
# s = [1, 60, 5]
# 작업이 끝나는 작업일수 = days
days = [0*i for i in range(len(p))]
for i in range(len(p)):
days[i] = math.ceil((100-p[i])/s[i])
aList = deque(days)
tmp = aList.popleft()
answer = list()
cnt = 1
for _ in range(len(aList)):
if tmp>=aList[0]:
cnt += 1
aList.popleft()
else:
tmp = aList.popleft()
answer.append(cnt)
cnt = 1
if len(aList)==0:
answer.append(cnt)
return answer
for _ in range(len(aList)):
if tmp>=aList[0]:
cnt += 1
aList.popleft()
else:
tmp = aList.popleft()
answer.append(cnt)
cnt = 1
if len(aList)==0:
answer.append(cnt)
return answer
if tmp>=aList[0]: cnt += 1 aList.popleft()
- 현재
tmp엔 첫번째 작업을 마치도록 필요한 작업일수가 들어있음- 만약 다음 작업이 마치도록 걸릴 작업일수
aList[0]가tmp보다 작다는건aList[0가 바로 배포될 수 있다는 뜻이므로cnt+=1한다.- 배포가 완료됐으면
aList[0]을 POP 한다.
else: tmp = aList.popleft() answer.append(cnt) cnt = 1
- 현재
tmp엔 첫번째 작업을 마치도록 필요한 작업일수가 들어있음- 만약 다음 작업이 마치도록 걸릴 작업일수
aList[0]가tmp보다 크다는건tmp보다 시간이 더 걸린다는 뜻이므로cnt에 쌓인 작업을 먼저 배포한다.tmp에는 새로운aList[0]값을 넣고,cnt를 1로 초기화한다.
if len(aList)==0: answer.append(cnt) return answer
- 모든 작업이 끝나고 배포가 아직 안된 작업들
cnt을 배포한다.- for문이 종료되면 정답리스트
answer를 반환한다.