알고리즘 문제 풀이/프로그래머스
[프로그래머스] 기능 개발
weekyear
2020. 12. 11. 23:32
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
<풀이>
- 남은 작업을 해치우기 위해 며칠 필요한지 담은 finish_days라는 deque를 만든다.
- finish_days(Q) 가 빌 때까지 반복하는 반복문을 만든다.
- 가장 첫번째 요소를 뽑고 해당 요소의 값보다 큰 값을 가진 요소가 나올 때 까지 뽑아내면서 count를 늘려준다.
- 큰 값을 가진 요소를 만나면 그 자리에서 멈추고 answer에 추가시켜준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
from collections import deque
from copy import deepcopy
def solution(progresses, speeds):
len_p = len(progresses)
finish_days = []
# 남은 작업을 해치우기 위해 며칠 필요한지 담은 finish_days를 만듬
for i in range(len_p):
remain_work = (100 - progresses[i])/speeds[i]
if remain_work - int(remain_work) > 0.0001:
remain_work = int(remain_work) + 1
else:
remain_work = int(remain_work)
finish_days.append(remain_work)
# deque로 변환
Q = deque(finish_days)
answer = []
while Q:
cur_work = Q.popleft()
count = 1
while Q:
if cur_work >= Q[0]:
Q.popleft()
count += 1
else:
break
answer.append(count)
return answer
|
cs |
반응형