https://school.programmers.co.kr/learn/courses/30/lessons/42586
풀이 - 나의 생각
첫번째 progress가 완료 되어야 뒤에 것들도 완료된다.
그러니까 첫번째 progress가 종료되는 날짜를 구하고
(math.ceil 을 쓰는 이유는 올림을 위해서이다.)
뒤에 progress들에도 일괄적으로 진행도를 더한다.
그 후 100이 넘어가는 progress들의 갯수를 세어준다.
100이 안 넘어가면 위의 과정을 반복한다.
코드
from collections import deque
import math
def solution(progresses, speeds):
progresses = deque(progresses)
speeds = deque(speeds)
answer = []
while progresses:
# 현재 배포까지 필요한 날짜 계산
day = math.ceil((100 - progresses[0]) / speeds[0])
# 모든 작업에 day만큼의 작업량 추가
progresses = deque([progress + speed * day for progress, speed in zip(progresses, speeds)])
# 완료된 작업 수 계산
count = 0
while progresses and progresses[0] >= 100:
progresses.popleft()
speeds.popleft()
count += 1
answer.append(count)
return answer
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
더 맵게 - Python, heap (0) | 2024.11.16 |
---|---|
프로세스 - Python, deque, sorted (1) | 2024.11.13 |
게임 맵 최단거리 - Python, deque, bfs (1) | 2024.11.10 |
코딩테스트 연습 > 전력망을 둘로 나누기 (완탐, BFS) (0) | 2024.02.22 |
2022 KAKAO TECH INTERNSHIP > 두 큐 합 같게 만들기 - JAVA (0) | 2024.02.06 |