- Today
- Total
hye-log
[프로그래머스]기능 개발(Python) 본문
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
'CodingTest > Programmers' 카테고리의 다른 글
[프로그래머스]주차 요금 계산(Python) (0) | 2022.12.25 |
---|---|
[프로그래머스]프린터(Python) (0) | 2022.11.19 |
[프로그래머스]롤케이크 자르기(Python) (0) | 2022.11.13 |
[프로그래머스]할인 행사(Python) (0) | 2022.11.12 |
[프로그래머스]베스트앨범(Python) (0) | 2022.11.09 |