[프로그래머스] 기능개발 Lv.2 - [파이썬/python]
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
progresses의 각 기능의 진도가 100%이상 일 때 서비스에 반영할 수 있다.
또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다.
각 배포마다 몇 개의 기능이 배포되는지를 반환(return) 문제 입니다.
※ 제한사항
- 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.
- 작업 진도는 100 미만의 자연수입니다.
- 작업 속도는 100 이하의 자연수입니다.
- 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.
힌트 보기
- for문을 사용하여 각 기능에 대한 진도를 하루씩 업데이트 해보기
- progresses배열의 첫 인덱스가 100이상이 될 때 다음 인덱스도 100이상인지 while문과 인덱스를 통해 확인해보기
- 만약 while문을 통해 확인이 되었다면 몇 번 while문을 통과했는지 count를 세서 한 번에 몇 개의 기능이 배포되었는데 반환해보기
정답 주의!!!

def solution(progresses, speeds):
result = [] # 각 배포마다 완료된 작업 수를 저장할 리스트
# 아직 작업 중인 경우 반복
# speeds가 빈 배열이 아닐 땐 True 반환, 빈 배열일 땐 False 반환
while speeds:
# 각 작업의 1일씩 진도 업데이트
for idx, speed in enumerate(speeds):
progresses[idx] += speed
count = 0 # 배포할 작업 수를 세는 변수
# 맨 앞 작업 진도가 100% 이상되면, progresses와 speeds 리스트에서 해당 작업 제거하고 작업 수 증가
# progresses가 빈 배열이 아닐 땐 True 반환, 빈 배열일 땐 False 반환
while progresses and progresses[0] >= 100:
del progresses[0], speeds[0]
count += 1
# 배포될 작업 수를 결과 리스트에 추가
if count > 0:
result.append(count)
return result

728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 다트 게임 - Lv.1 (31) | 2023.09.12 |
---|---|
[프로그래머스] 최소직사각형 - Lv.1 (36) | 2023.09.07 |
[프로그래머스] 저주의 숫자 3 - Lv.0 (43) | 2023.09.01 |
[프로그래머스] 문자열 내림차순으로 배치하기 - Lv.1 (23) | 2023.09.01 |
[프로그래머스] 3진법 뒤집기 - Lv.1 (23) | 2023.09.01 |