자료구조&알고리즘/프로그래머스

[Python] 기능개발 - 스택/큐

두잇 두두 2024. 2. 6. 21:35
728x90

글의 요약 설명 부분. 150자를 적어주세요.

 

 


문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/42586

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

def solution(progresses, speeds):
    answer = []
    while progresses:
        result = 0
        while progresses and  progresses[0] >=100:
            result += 1
            progresses.pop(0)
            speeds.pop(0)
        progresses = [progresses[i]+speeds[i] for i in range(len(progresses))]
        if result:
            answer.append(result)
    
    return answer

 

다른 사람 코드

 

 

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
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]

 


 

접근법

progress가 있을 때 까지 돌면서 result로 체크
한 단계가 지날 때 마다 progresses를 리스트컴프레이션을 통해 한 단계씩 진행 했습니다

 


 

배운 점