본문 바로가기

Python/프로그래머스

[프로그래머스] [Python] 기능 개발

문제 풀이

 

def solution(progresses, speeds):
    answer = []
    
    # 진도율을 day로 표현
    day = 1;
    
    # progresses가 빌 때까지(progresses에 값이 있다면)
    while progresses:
    	# 완료된 작업의 개수
        complete = 0
        for i in range(len(progresses)):
        	# 하단 설명 참조
            if (progresses[0] + (speeds[0] * day)) >= 100:
                complete += 1
                progresses.pop(0)
                speeds.pop(0)
                
        # 완료된 작업이 있다면
        if complete != 0:
            answer.append(complete)
            
        # 진도율 증가
        day += 1
        
    return answer

 

 우선 progresses와 speeds를 queue로 사용한다. [0]번 값을 비교하면서 초기 진도와 진도의 증가율을 더한 값이 100이 넘는다면 .pop(0)을 통해 그 값을 빼 준다. 이렇게 한다면 [0]번의 다음 값들이 [0]번보다 먼저 100 이상이 된다고 하더라도 pop이 되지 않기 때문에 [0]번 작업이 완료된다면 이후의 100 이상이 된 값은 for문을 통해 모두 pop이 될 수 있다. 

 

 

문제 링크

 

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

 

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

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

programmers.co.kr