처음엔 변수 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
를 반환한다.