[프로그래머스-Stack/Queue] 기능 개발

CHOI YUN HO·2021년 4월 22일
0

알고리즘 문제풀이

목록 보기
29/63

📃 문제 설명

기능 개발

[문제 출처 : 프로그래머스]

👨‍💻 해결 방법

progresses의 값들과 speeds의 값들을 이용해서 각 기능이 배포까지 몇 일이나 걸리는지 구한다.
이 때 배포는 하루의 끝에 이루어진다고 가정하기 때문에 올림을 사용해야한다.

올림을 사용할 때 ceil을 사용하지 않고
-((p - 100) // s) 와 같이 계산하여 올림을 구현했다.

위 과정에서각 기능의 배포일을 days배열에 저장하는데,
뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발되더라도 앞에 있는 기능이 배포될 때 함께 배포되어야 하므로,

현재 기능의 배포일이 이전 기능의 배포일보다 더 늦다면 이전 기능을 배포하고(answer 배열에 1 append)

그게 아니라면 이전 기능의 배포와 함께 배포하므로 answer 배열의 마지막 값에 1을 더해준다.

결과적으로 answer배열에는 배포날이 몇 개인지 그리고 각 몇개의 기능을 배포하는지 저장된다.

👨‍💻 소스 코드

def solution(progresses, speeds):
    answer = []
    days = []

    for p, s in zip(progresses, speeds):
        day = -((p - 100) // s)
        if not len(days) or day > days[-1]:
            days.append(day)
            answer.append(1)
        else:
            answer[-1] += 1
    return answer
profile
가재같은 사람

0개의 댓글