KEEP GOING

[python] 프로그래머스 : 기능개발 (stack, queue) 본문

code review/stack-queue

[python] 프로그래머스 : 기능개발 (stack, queue)

jmHan 2022. 2. 18. 14:12
반응형

https://programmers.co.kr/learn/courses/30/lessons/42586?language=python3 

 

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

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

programmers.co.kr

 

1. stack 구현 

from math import ceil

def solution(progresses, speeds):
    answer = []
    stack = []
    # # n일간 작업에 대한 데이터 리스트를 stack에 추가  
    for progress, speed in zip(progresses, speeds):
        stack.append(ceil((100 - progress) / speed))
    count = 1
    now = stack.pop(0)
    while stack:
        if now < stack[0]:
            answer.append(count)
            now = stack.pop(0)
            count = 1
        else:
            count += 1
            stack.pop(0)
    answer.append(count)
            
    return answer

2. 큐로 구현

from collections import deque
from math import ceil

def solution(progresses, speeds):
    answer = []
    data = []
    for progress, speed in zip(progresses, speeds):
        data.append(ceil((100 - progress) / speed))
    # n일간 작업에 대한 데이터 리스트를 큐에 추가  
    que = deque(data)
    count = 1
    now = que.popleft()
    while que:
        # 오른 옆에 있는 값보다 작다면
        if now < que[0]:
            answer.append(count)
            # count 값 초기화
            count = 1
            # 큰 값으로 now 초기화
            now = que.popleft()
        # 크거나 같다면
        else:
            # 해당 값을 제거 후 count 1 증가 
            que.popleft()
            count += 1
    answer.append(count)        
    return answer
반응형
Comments