https://programmers.co.kr/learn/courses/30/lessons/42586
progresses 리스트와 speeds 리스트가 주어진다. progresses는 진행 현황, speeds는 하루에 진행 가능한 정도. 며칠에 몇개의 기능을 배포를 할 수 있을지 리턴한다. 설명하자니 어려우니 스크린샷
여기서 중요한건 앞의 기능이 다 개발되지 않으면 뒤에 것이 개발이 다 됐다고 해도 배포될 수 없고, 앞의 것이 배포될 때 함께 배포된다.
def solution(progresses, speeds):
stack = list(reversed(progresses))
speed = list(reversed(speeds))
answer = []
while(stack != []):
cnt = 0
for i in range(len(stack)-1,-1,-1):
stack[i]+=speed[i]
for i in range(len(stack)-1,-1,-1):
if(i==len(stack)-1):
if(stack[i]>=100):
cnt+=1
stack.pop()
else:
break
answer.append(cnt)
return [i for i in answer if(i!=0)]
import math
def solution(progresses,speeds):
q = []
answer = []
for p,s in zip(progresses, speeds):
q.append(math.ceil((100-p)/s))
print(q)
i=0
cnt = 1
for j in range(1, len(q)):
if(q[i]>=q[j]):
cnt+=1
else:
answer.append(cnt)
cnt=1
i=j
answer.append(cnt)
return answer
def solution(progresses, speeds):
daysLeft = list(map(lambda x: (ceil((100 - progresses[x]) / speeds[x])), range(len(progresses))))
count = 1
retList = []
for i in range(len(daysLeft)):
try:
if daysLeft[i] < daysLeft[i + 1]:
retList.append(count)
count = 1
else:
daysLeft[i + 1] = daysLeft[i]
count += 1
except IndexError:
retList.append(count)
return retList
암튼 이렇게 다양한 방법으로 문제를 풀어봤다.
나에게 필요한 것은 일차원적으로 생각하지 말고 좀더 창의적인 방법을 생각해내는 것이다.