새소식

반응형
코딩 테스트

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

  • -
728x90
반응형

문제

  • 각 배포마다 몇 개의 기능이 배포되는지 리턴하기
    • 각 기능의 개발속도는 모두 다르며 진도가 100% 일 때, 서비스에 반영된다.
    • 뒤에 있는 기능은 앞에 있는 기능이 먼저 배포되어야 배포될 수 있다.
    • 배포는 하루에 한 번 가능하다.
  • 1 <= 기능 개수 <= 100

 

풀이

  • 시간복잡도 : 기능 개수가 100개이므로 대부분의 알고리즘이 가능할 것
  • 개발이 끝나는 날짜를 계산해두고, 한 번 배포할 때 몇 개의 기능이 배포될 수 있는지 카운트 한다.
    • 개발 끝나는 날 계산에서 - 부호를 붙인 이유는 올림 계산을 해야되므로
    • 예를 들어 30%이고 하루에 30%씩 완성될 때는 2일이 아닌 3일차에 배포 가능함
  • 이전 배포일보다 더 오랜 시간이 걸리는 경우 새롭게 배포되어야 한다.

 

def solution(progresses, speeds):
    time = [-(-(100-p)//s) for p, s in zip(progresses,speeds)]
    answer = [1, ]      # 정답 배열
    prev = time[0]      # 이전 배포일
    for i in range(1, len(time)):
        if time[i] <= prev :    # 이전 배포일보다 개발 날짜가 빠르면
            answer[-1] += 1         # 함께 배포
        else:                   # 아니면, 새로운 날에 배포
            answer.append(1)    
        prev = max(prev, time[i])
    
    return answer

 

References

  • 프로그래머스 코득점 Kit 스택/큐
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.