SW/알고리즘

파이썬 : 프로그래머스 : 기능개발 : 풀이

얇은생각 2019. 8. 22. 12:30
반응형

풀이

import math

def solution(progresses, speeds):
    answer = []
    
    remain_day_list = []
    
    for i in range(len(progresses)):
        remain_progress = 100 - progresses[i]
        remain_day = remain_progress / speeds[i]
        remain_day_list.append(math.ceil(remain_day))
        
    for i in range(1,len(remain_day_list)):
        if remain_day_list[i-1] > remain_day_list[i]:
            remain_day_list[i] = remain_day_list[i-1]
    
    count = 1
    for i in range(1,len(remain_day_list)):
        if remain_day_list[i-1] >= remain_day_list[i]:
            count += 1
        else:
            answer.append(count)
            count = 1
    
    answer.append(count)
        
    return answer

 

 

실행 결과

정확성 테스트

테스트 1 통과 (0.06ms, 10.7MB)
테스트 2 통과 (0.09ms, 10.9MB)
테스트 3 통과 (0.08ms, 10.8MB)
테스트 4 통과 (0.07ms, 10.7MB)
테스트 5 통과 (0.06ms, 10.7MB)
테스트 6 통과 (0.06ms, 10.8MB)
테스트 7 통과 (0.08ms, 10.7MB)
테스트 8 통과 (0.06ms, 10.7MB)
테스트 9 통과 (0.07ms, 10.8MB)
테스트 10 통과 (0.07ms, 10.8MB)

 

 

 

해설

우선 남은 일자를 계산하였습니다. 그 다음, 남은 일자를 하나의 배열로 만들었습니다.  만약 앞에 프로세스보다 남은 일자가 적은 경우, 앞에 있는 일자와 동일하게 초기화를 시켜주었습니다. 그 다음, 동일한 날짜의 개수를 카운트 해줍니다. 만약 다른 날짜가 나오는 경우 해당 카운트를 반환 리스트에 삽입하였습니다. for 문이 끝난 후, 남은 카운트를 추가해주고 반환해주어 문제를 풀어보았습니다.

반응형