[Programmers] 기능개발
🎈문제
https://programmers.co.kr/learn/courses/30/lessons/42586
💬설명
- 입출력에 순서가 있다 -> 스택/큐 생각해보자.
- 가장 앞에 있는 작업이 완료되는 시점으로 시간이동 -> 100퍼센트 넘어간 작업들 popleft하면서 개수를 세준다.
- 다른 사람들은 어떻게 풀었을지 구글링 해보니 모든 작업들에 대해 각각이 완료되는 시점을 모두 구해놓은 뒤에 계산해주는 방식도 있었다. (이렇게 하면 더 깔끔할듯?!)
👩💻코드
import math
def solution(progresses, speeds):
answer = []
while progresses:
answer.append(0)
first_progress = progresses[0]
first_speed = speeds[0]
# 첫번째 작업이 완료되는 시점 구하기
num = math.ceil((100 - first_progress) / first_speed)
# 구한 시점으로 이동
for i in range(len(progresses)):
progresses[i] += speeds[i] * num
# 완료된 작업 개수만큼 pop
for i in range(len(progresses)):
if progresses[i] >= 100:
answer[-1] += 1
else:
break
progresses = progresses[answer[-1]:]
speeds = speeds[answer[-1]:]
return answer
728x90
반응형
'CS > Algorithm 문제' 카테고리의 다른 글
[Programmers] 다리를 지나는 트럭 (0) | 2021.10.07 |
---|---|
[Programmers] 프린터 (0) | 2021.10.07 |
[Programmers] 베스트앨범 (0) | 2021.10.07 |
[Programmers] 위장 (0) | 2021.10.07 |
[Programmers] 전화번호 목록 (0) | 2021.10.07 |