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]