hye-log

[프로그래머스]기능 개발(Python) 본문

CodingTest/Programmers

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

iihye_ 2022. 11. 18. 19:03

0. 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/42586

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

1) 작업의 진도와 개발 속도가 주어질 때

2) 각 배포마다 몇 개의 기능이 배포되는지 구하기

 

2. 입출력

# input
progresses = [93, 30, 55]
speeds = [1, 30, 5]

# output
return = [2, 1]

 

3. 코드

import math

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

    remain = []                                                     # 남은 작업 일수
    for i in range(len(progresses)):                                # 남은 작업 일수 계산
        remain.append(math.ceil((100-progresses[i]) / speeds[i]))

    work = remain.pop(0)                                            # 첫 번째 작업 뽑기
    num = 1                                                         # 작업 개수 1개

    while remain:                                                   # remain이 비어있을 때까지
        temp = remain.pop(0)                                        # 작업 뽑기
        if work < temp:                                             # 기존 작업보다 오래 걸리면
            work = temp                                             # 기존 작업에 업데이트
            answer.append(num)                                      # 작업 개수 추가
            num = 1                                                 # 작업 개수 초기화
        else:                                                       # 기존 작업보다 덜 걸리면
            num += 1                                                # 작업 개수 추가
    answer.append(num)

    return answer

 

실행 결과

 

4. 회고

이 문제는 스택을 이용해서 작업 진도에 따라 몇 개의 기능을 배포할 수 있는지 구하는 문제이다.

먼저 작업의 진도와 작업의 개발 속도를 배열을 이용해서 남은 작업 일수를 계산한다. 이때, math.ceil 함수를 이용해서 소수점 자리를 올림으로 처리했다. 만약에 3.3일이 걸리는 작업이 있다면 4일을 해야 작업이 완료되기 때문이다.

다음으로 남은 작업 배열에서 하나를 뽑아서 기존 작업이라고 한다. 남은 작업 배열에서 하나를 더 뽑아서 다음 작업이라고 한다. 기존 작업보다 다음 작업이 오래 걸리는 경우 기존 작업은 배포할 수 있다. 따라서 answer에 배포할 수 있는 작업 개수를 추가한다. 만약 기존 작업보다 다음 작업이 덜 걸리는 경우 작업 개수를 하나 추가한다. 

 

5. Github

https://github.com/iihye/Algorithm/blob/main/Programmers/feature_development.py

 

GitHub - iihye/Algorithm: Solving algorithm problems

Solving algorithm problems. Contribute to iihye/Algorithm development by creating an account on GitHub.

github.com

 

728x90
Comments