[프로그래머스] LV2. 기능개발 - 파이썬

곌로그·2023년 10월 19일
0

[python]코딩테스트

목록 보기
26/34
post-thumbnail

문제 링크


문제 요약

스택/큐 문제 유형에 해당한다.

여러 기능 개선 작업을 수행 중 각 기능은 완료도(진도)가 100%일 때만 서비스에 반영. 기능마다 개발 속도는 다를 수 있어, 나중에 개발된 기능이 먼저 완성될 수 있음 그러나, 기능들은 주어진 순서대로만 배포 가능. 즉, 뒤에 있는 기능이 앞서 완성되더라도 앞의 기능이 배포될 때 함께 배포


문제 풀이

from collections import deque

def check(queue, day):
    count = 0 

    for q in queue:
        if q <= day:
            count +=1
        else:
            return count
    return count

def solution(progresses, speeds):
    answer = []
    days = [] # 배포까지 필요한 일 수 
    
    for i in range(len(progresses)):
        # 남은 작업 진도로 전부 대체 
        progresses[i] = 100 - progresses[i]
        if progresses[i] % speeds[i] != 0:
            days.append(int(progresses[i]/speeds[i])+1)
        else:
            days.append(int(progresses[i]/speeds[i]))

    dayq = deque(days)

    while dayq:
        day = dayq.popleft() 
        tmp_count = check(dayq, day)
        for _ in range(tmp_count):
            dayq.popleft()
        answer.append(tmp_count+1)
    
    return answer

📌 고려해야할 점

  • 전체 진행도에서 남은 진행도를 구하고 해당 기능의 개발 속도를 나누어서 새로운 리스트를 형성
  • 새로운 리스트를 바로 dayq라는 deque 형태로 변형하여 popleft 기능을 활용

0개의 댓글