공부 기록장
[프로그래머스 - Python] 기능 개발 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42586
문제 요약
진도가 100 프로일 때 기능을 서비스에 반영 가능
뒤 기능 먼저 개발 시, 앞에 있는 기능 배포시 함께 배포
- progresses : 배포되어야 하는 순서대로의 작업의 진도
- speeds : 각 작업의 개발 속도
각 배포마다 몇 개의 기능이 배포되는지?
코드 설명
from collections import deque
def solution(progresses, speeds):
answer = []
q = deque([])
for p, s in zip(progresses, speeds):
f = 100 - p
if f % s == 0:
q.append(f//s)
else:
q.append(f//s + 1)
min_val = q.popleft()
count = 1
while q:
now = q.popleft()
if now <= min_val:
count += 1
else:
min_val = now
answer.append(count)
count = 1
if len(q) == 0:
answer.append(count)
return answer
우선 남은 진도와 개발 속도에 따른 각 작업의 소요 일을 q에 저장한다
q의 왼쪽부터 일수를 확인하는데,
현재 설정된 소요 일수보다 작은 소요 일수를 갖는 경우가 나오면, 같이 배포가 됨으로 count를 세어준다
큰 소요 일수를 갖는 경우가 나오면, 현재 설정된 소요 일수를 변경해준다.
또한, zip 함수를 사용하면 병렬적으로 여러 개의 iterable을 순회할 수 있다.
배운 점
- 여러 개의 iterable을 순회하고 싶을 때에는, zip() 함수를 사용하면 된다
- zip 함수는 인자 개수에 제한이 없다
'코딩 테스트 > 프로그래머스 문제 풀이' 카테고리의 다른 글
[프로그래머스 - Python] 여행경로 (0) | 2024.10.24 |
---|---|
[프로그래머스 - Python] 디스크 컨트롤러 (0) | 2024.10.17 |
[프로그래머스 - Python] 소수 찾기 (1) | 2024.10.16 |
[프로그래머스 - Python] N으로 표현 (0) | 2024.10.16 |
[프로그래머스 - Python] 단어 변환 (0) | 2024.10.15 |