반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
기능 개발이 먼저 되어도 앞에 있는 기능과 함께 배포가 되야 하므로 큐를 사용한다.
progress마다 남은 작업 진도를 구한다.이는 100 - progress로 구하면 된다.
그러면 progresses [93, 30, 55]는 [7, 70, 45]로 바뀐다.
이를 작업속도로 나누면 남은 작업일을 구할 수 있다.
작업 속도는 [1, 30, 5]이므로 이걸 이용해 작업일을 구하면 다음과 같다.
[7, 3, 9]
2번 작업이 먼저 끝나지만 1번 작업이 끝났을 때 배포가 가능하다.
여기서 큐를 이용해 함께 배포가 가능한 작업들을 구한다.
함께 배포가 되는 선행 작업의 기준은 7이다.
7보다 뒤에 있는 작업들 중에 7과 같거나 작으면 함께 배포가 가능하다.
이것들을 큐에서 몇 개 pop할 수 있는지 구하면 된다.
그러면 큐에는 [9]만 남을 것이고 9 뒤로도 위와 같은 작업을 반복 하면 된다.
코드
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
from collections import deque
import math
def solution(progresses, speeds):
q = deque([math.ceil((100 - progresses[i]) / speeds[i]) for i in range(len(progresses))])
answer = []
while q:
count = 0
remain = q[0]
while q and remain >= q[0]:
q.popleft()
count += 1
answer.append(count)
return answer
|
cs |
반응형
'프로그래머스' 카테고리의 다른 글
프로그래머스 - 다리를 지나는 트럭 (0) | 2024.02.02 |
---|---|
프로그래머스 - 카드 뭉치 (0) | 2024.01.31 |
프로그래머스 - 컨트롤 제트 (0) | 2024.01.26 |
프로그래머스 - 올바른 괄호 (0) | 2024.01.25 |
프로그래머스 - 같은 숫자는 싫어 (0) | 2024.01.24 |