[프로그래머스]기능개발
링크 : 문제 바로가기
나의 오답
def solution(progresses, speeds):
answer = []
result=[]
for i in range(len(progresses)):
a= (100-progresses[i])//speeds[i]
b= (100-progresses[i])%speeds[i]
if b == 0:
pass
else:
a+=1
result.append(a)
cnt=1
for i in range(len(result)-1):
if result[i] >= result[i+1]:
cnt+=1
else:
answer.append(cnt)
cnt=1
answer.append(cnt)
return answer
해결
문제 이해를 잘못했다. 만약 완성까지 일수가 [ 7,3,2,1,5] 다음과 같다면 7일 뒤에 있는 3일,2일,1일,5일만에 끝나는 작업들은 모두 배포되지 못하다가 7일날 한번에 다같이 배포가 되어야한다. 하지만 나는 무조건 바로 전단계보다 적거나 같은 일수를 가져야한다는 조건을 써서 이 경우에는 7일,3,일,2일,1일만 한번에 배포되고 5일은 따로 배포되는 구성을 만들었다. 즉 로직을 배열에서 순서대로 진행될 때 새로운 최댓값을 만나면 배포되는 형식으로 바꿨다.
def solution(progresses, speeds):
answer = []
result=[]
for i in range(len(progresses)):
a= (100-progresses[i])//speeds[i]
b= (100-progresses[i])%speeds[i]
if b == 0:
pass
else:
a+=1
result.append(a)
bigone=result[0]
cnt=0
for i in range(len(result)):
if bigone < result[i]:
answer.append(cnt)
bigone=result[i]
cnt=1
else:
cnt+=1
answer.append(cnt)
return answer
알고리즘 : 스택/큐