문제
문제 이해
- 각 기능은 진도가 100%일 때 서비스에 반영 가능
- 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses, 개발 속도가 적힌 정수 배열 speeds
- 배포는 하루에 한 번씩 이뤄지며, 뒤의 기능이 먼저 개발돼도 앞의 기능이 개발돼야 함께 배포 가능
- 각 배포마다 몇 개의 기능이 배포되는지 반환
풀이
progresses와 speeds를 활용해 각 기능의 배포 날짜를 구하고, 각 배포마다 몇 개의 기능이 배포되는지 확인
- 각 기능의 배포 날짜를 저장하기 위한 배열 day, 배포될 기능의 수 func 생성
- progresses와 speeds를 활용해 기능의 개발이 100%에 도달하기 위한 일 수를 day에 저장
- 배열 day를 순회하며 해당 배포일 수보다 작은 배포일 수를 가진 기능의 수를 배열 func에 저장후 반환
코드
카테고리가 스택/큐여서 자료구조가 필요한 문제인가 싶었지만, 그냥 생각대로 풀었더니 해결 되었다. 리스트여서 스택을 써서 푼건가..?
def solution(progresses, speeds):
day = []
func = []
for p, s in zip(progresses, speeds):
cnt = 0
while p < 100:
p += s
cnt += 1
day.append(cnt)
i = 0
day_len = len(day)
while i < day_len:
d = day[i]
cnt = 0
while day[i] <= d:
cnt, i = cnt + 1, i + 1
if i == day_len:
break
func.append(cnt)
return func
'알고리즘 연습 > 프로그래머스' 카테고리의 다른 글
[Python - Lv.2] 프로세스 (0) | 2024.03.20 |
---|---|
[Python - Lv.2] 의상 (0) | 2024.03.19 |
[Python - Lv.2] n^2 배열 자르기 (0) | 2024.03.17 |
[Python - Lv.2] [1차] 캐시 (0) | 2024.03.16 |
[Python - Lv.2] 할인 행사 (0) | 2024.03.15 |