본문 바로가기
ALGORITHM/PROGRAMMERS

[PG/Python] 기능개발

by 안녕나는현서 2021. 12. 9.
728x90

📌 문제

https://programmers.co.kr/learn/courses/30/lessons/42586

 

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

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

programmers.co.kr

 

📌 문제 접근 방법

  1. 먼저 progresses와 speeds를 queue로 만들어줬다.
  2. progresses가 빌 때까지 작업과 배포를 반복한다.
  3. 작업은 progresses의 0번째 작업과 speeds의 0번째 속도를 더해서 progresses의 마지막에 다시 push해줬다.
  4. 배포는 progresses를 순회하며 앞에서부터 작업량이 100이 넘은 작업의 개수를 cnt에 저장하고 100이 넘지 않는 작업을 만나면 break로 반복문을 종료해줬다.
  5. cnt만큼 작업이 배포되었으므로 cnt를 answer에 저장해주고, progresses와 speeds는 cnt만큼 pop해준다.

 

📌 코드

from collections import deque

def solution(progresses, speeds):
    progresses = deque(progresses)
    speeds = deque(speeds)
    
    answer = []
    while progresses:
        n = len(progresses)
        # 작업
        for _ in range(n):
            progresses.append(progresses.popleft() + speeds[0])
            speeds.append(speeds.popleft())
        
        # 배포
        cnt = 0
        for i in range(n):
            if progresses[i] >= 100:
                cnt += 1
            else:
                break
        if cnt:
            answer.append(cnt)
        
        for _ in range(cnt):
            progresses.popleft()
            speeds.popleft()
        
    return answer
728x90

'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글

[PG/Python] 튜플  (0) 2021.12.16
[PG/Python] 가장 먼 노드  (0) 2021.12.09
[PG/Python] 불량 사용자  (0) 2021.12.08
[PG/Python] 큰 수 만들기  (0) 2021.12.02
[PG/Python] 멀쩡한 사각형  (0) 2021.12.01

댓글