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

Beanzinu·2022년 1월 15일

코딩테스트

목록 보기
3/42

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

접근법

각 기능은 이전 기능이 완료될 때까지 배포를 할 수 없으므로
progresses 배열을 index 0~len(progresses)-1 까지 순차적으로 접근한다.
k번째 기능의 경우에서 day일만큼 지났다고 가정하면

  1. 이미 완료된 기능일 경우 ( progresses[i] + day*speeds[i] >= 100 )
  • 같은 날에 배포가 가능하다. ( s+=1 )
  1. 완료되지 않은 경우
  • 배포가 가능한 기능들이 존재한다면 ( s > 0 ) 정답에 추가
  • 배포가 가능한 날짜까지 건너뛴 후 배포 가능한 기능의 수 추가 ( s += 1 )
    while( progresses[i] + day*speeds[i] < 100 ):
    day += 1

( 가장 바깥쪽의 while문을 빠져나온 뒤 배포가능한 기능들이 존재한다면 정답에 추가하여 최종 리턴 )

코드

def solution(progresses, speeds):
    answer = []
    s = 0 
    i,day = 0,0
    while( i < len(progresses) ):
        # 이미 완료된 기능
        if( progresses[i] + day*speeds[i] >= 100 ): 
            s += 1
            i += 1
            continue
        # 완료되지 않았을 경우, 이전 배포된 기능들의 개수를 정답에 추가
        elif( s > 0):
            answer.append(s)
            s = 0
        while( progresses[i] + day*speeds[i] < 100 ):
            day += 1
        s += 1 # 현재 기능 완료
        i += 1 # 다음 기능
    if( s > 0 ): answer.append(s) #
    return answer
profile
당신을 한 줄로 소개해보세요.

0개의 댓글