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

일단 해볼게·2023년 2월 26일
0

프로그래머스

목록 보기
48/106

내 답

from collections import deque
def solution(progresses, speeds):
    answer = []
    deploy = deque()
    
    for i in range(len(progresses)):
        # 작업 시간 저장
        day = 0
        
        while True:
            day += 1
            progresses[i] += speeds[i]
            
            if progresses[i] >= 100:
                deploy.append(day)
                break
    
    dep = deploy.popleft() # 첫 배포 날짜

    when_dep = 1 # 배포 시 같이 끝나는 기능 count
    
    for function in list(deploy): # deque는 순회가 안되므로 list로 변환
        if dep >= function: # 배포 시간안에 기능개발이 완료될 때
            deploy.popleft()
            when_dep += 1
        else:
            answer.append(when_dep)
            dep = deploy.popleft() # 배포 시간
            when_dep = 1

    answer.append(when_dep)
    
    return answer

좋은 예시

def solution(progresses, speeds):
    print(progresses)
    print(speeds)
    answer = []
    time = 0
    count = 0
    while len(progresses)> 0:
        if (progresses[0] + time*speeds[0]) >= 100:
            progresses.pop(0)
            speeds.pop(0)
            count += 1
        else:
            if count > 0:
                answer.append(count)
                count = 0
            time += 1
    answer.append(count)
    return answer

좋은 예시는 시간복잡도가 O(n)으로 내 코드보다 효율적이다.

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글