Koala - 9기/코딩테스트 준비 스터디

[프로그래머스/python] 스택/큐 기능개발

Juno7 2023. 2. 5. 17:02

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

 

프로그래머스

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

programmers.co.kr

 

코드

def solution(progresses, speeds):
    answer = []
    for i in range(1, 101):
        cnt = 0
        
        for n, j in enumerate(speeds):
            progresses[n] = progresses[n] + j
        
        while progresses:
            if progresses[0] >= 100:
                progresses.pop(0)
                speeds.pop(0)
                cnt += 1
            else:
                break
        
        if cnt != 0:
            answer.append(cnt)
        if len(progresses) == 0:
            break   
        
    return answer

 

풀이

기능별로 진도가 100%가 넘으면 서비스에 반영할 수가 있다. 단, 앞의 진도율이 먼저 100%가 넘어야 뒤의 진도율을 서비스에 반영할 수가 있다. 스택을 사용하면 풀 수 있는 문제이다. 앞의 진도율이 100%가 넘으면 pop 함수를 사용해서 앞의 원소를 제외해주고 그다음에 뒤의 원소가 100%가 넘어있을 때, 다시 pop 함수를 사용해서 뒤의 원소를 제거해주면 되는 문제이다. 만약 진도율이 100%가 넘지 않았다면 다시 for 문을 돌면서 진도를 나가게 된다. 그러다가 100% 넘으면 다시 앞부분의 진도를 pop 해주고 이를 계속 반복하면서 아무 원소가 남지 않을 때까지 해주면 된다.