알고리즘 문제풀이
# testcase 11 오류
# 원인 찾음 나눗셈 // -> / 로 변경
# import math
# def solution(progresses, speeds):
# answer = []
# cnt = 1
# last = math.ceil((100 - progresses[0]) / speeds[0])
# for idx in range(1, len(progresses)):
# tmp = math.ceil((100 - progresses[idx]) / speeds[idx])
# if last >= tmp:
# cnt += 1
# else:
# answer.append(cnt)
# last = tmp
# cnt = 1
# answer.append(cnt)
# return answer
import math
def solution(progresses, speeds):
answer = []
front = 0
for i in range(1, len(progresses)):
current = math.ceil((100 - progresses[i]) / speeds[i])
before = math.ceil((100 - progresses[front]) / speeds[front])
if current > before:
answer.append(i - front)
front = i
answer.append(len(progresses) - front)
return answer
참고 하면 좋을 것 같음
# # 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] # # stack pop 방식 사용 def solution(progresses, speeds): answer = [] count = 0 time = 0 while len(progresses) > 0: if (progresses[0] + time * speeds[0]) >= 100: progresses.pop(0) speeds.pop(0) count += 1 else: if count > 0: answer.append(count) count = 0 time += 1 answer.append(count) return answer