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 해주고 이를 계속 반복하면서 아무 원소가 남지 않을 때까지 해주면 된다.