목차
728x90
반응형
문제 설명
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.
또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.
먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
문제 풀이
- 작업일 수를 세기 위한 days와 배포 날짜에 배포 가능한 기능 수를 세기 위한 cnt 선언
- while 반복문을 통해 작업의 개수만큼 반복
- 조건문을 통해 (진행된 작업) + (하루 개발속도) * (작업일 수)가 100 이 되거나 넘으면
= 작업이 완료되면, pop함수를 이용하여 progresses, speeds를 삭제하고 다음으로 넘어 감 - 다음으로 넘어가면 cnt에 1을 더해 줌
- 작업이 완료되지 않은 경우, 두번째 조건문을 통해 cnt가 0보다 크면 앞에 작업이 끝난 기능과 함께 배포가 불가능 한 것이므로
이때의 cnt를 정답 리스트에 추가해주고 초기화 - 두번째 조건문이 끝나고 나면 days에 1을 더해 다음으로 넘어감
- 반복문이 완료된 후 나온 cnt의 값을 정답 리스트에 추가
정답 코드
def solution(progresses, speeds):
days = 0
cnt = 0
answer = []
while progresses:
if progresses[0] + speeds[0] * days >= 100: # 작업이 완료되었을 경우
# FIFO(큐) 자료구조를 이용해 완료된 기능을 삭제하고 다음으로 넘어감
progresses.pop(0)
speeds.pop(0)
cnt += 1
else: # 작업이 완료되지 않았을 경우
if cnt > 0: # cnt가 0보다 크다면 앞에 작업과 같은데 실행이 불가능
answer.append(cnt)
cnt = 0
days += 1
answer.append(cnt)
return answer
* 이 문제는 프로그래머스 코딩테스트 연습 2단계 문제입니다.
728x90
반응형
'Python > Coding Test' 카테고리의 다른 글
[Coding Test] 3진법 뒤집기 (0) | 2023.07.07 |
---|---|
[Coding Test] 이진 변환 반복하기 (0) | 2023.07.07 |
[Coding Test] 올바른 괄호 (0) | 2023.06.28 |
[Coding Test] JadenCase 문자열 만들기 (0) | 2023.06.27 |
[Conding Test] 이상한 문자 만들기 (0) | 2023.06.22 |