Algorithm/프로그래머스
스택/큐 - 기능개발 (프로그래머스)
jun_code
2025. 1. 16. 23:21
<문제>
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
<코드>
def solution(progresses, speeds):
answer = []
time = []
l = len(progresses)
for i in range(l):
p, s = progresses[i], speeds[i]
if (100 - p) % s == 0:
time.append((100 - p) // s )
else:
time.append((100 - p) // s +1)
M, cnt = time[0], 0
for i in time:
if M >= i:
cnt +=1
else:
answer.append(cnt)
M = i
cnt = 1
if sum(answer) != l:
answer.append(l-sum(answer))
return answer
<풀이>
- 리스트가 두개인 경우 같이 묶기 위해 zip을 이용하면 더 좋을 듯 하다(아래 코드 참고)
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]