def solution(progresses, speeds):
answer = []
howManyDays = []
day = 0
maxD = 0
count = 0
# 일이 각각 며칠 걸리는지.
for i in range(len(progresses)):
howManyDays.append( round(((100 - progresses[i]) / speeds[i]) + 0.5) )
# 11번 케이스
print(howManyDays)
maxD = howManyDays[0]
count = 0
for days in howManyDays:
# 첫번째 일보다 소요 시간이 작으면 다 같이 배포 가능.
if maxD >= days:
count += 1
# 소요시간이 크면 앞에 것과 같이 배포 못함. 얘랑 뒤에거를 같이 해야함.
else:
maxD = days
answer.append(count)
count = 1
answer.append(count)
return answer
11번 테스트 케이스가 문제였는데, [94, 96], [3, 3] 을 넣어보니 이상함을 알 수 있었다.
Math.ceil
을 해야하는걸 int
== Math.floor
를 했기 때문이었다.. 순간 파이썬 math 모듈이 내장인가 아닌가 생각이 안나서 round(x+0.5)
로 손봤다.
참고가 된 다른사람의 풀이. ceil 대신 몫을 사용하여 -로 바꾸는 방식을 이용했다.
def solution(progresses, speeds):
Q=[]
for p, s in zip(progresses, speeds):
if len(Q)==0 or Q[-1][0]<-((p-100)//s):
Q.append([-((p-100)//s),1])
else:
Q[-1][1]+=1
return [q[1] for q in Q]