티스토리 뷰

 

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 

<풀이>

  1. 남은 작업을 해치우기 위해 며칠 필요한지 담은 finish_days라는 deque를 만든다.
  2. finish_days(Q) 가 빌 때까지 반복하는 반복문을 만든다.
  3. 가장 첫번째 요소를 뽑고 해당 요소의 값보다 큰 값을 가진 요소가 나올 때 까지 뽑아내면서 count를 늘려준다.
  4. 큰 값을 가진 요소를 만나면 그 자리에서 멈추고 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
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함