개발공부/algorithm

[프로그래머스][python] 기능 개발 - list

so.py 2021. 5. 18. 16:01

문제

  • 프로그래머스: 기능 개발
  • Level 2
  • Link
 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 

나의 코드

  1. 각 작업의 남은 일수를 계산하여 순서대로 order 리스트에 추가해준다.
  2. order 리스트에서:
    1. i번째 원소가 i + 1번째 원소보다 보다 크거나 같으면, 그 다음 기능들이 i번째 원소와 같은 날 배포가 된다. 한 번에 배포되는 작업 수를 1 증가시켜준다.
    2. i번째 원소가 i + 1 보다 작다면, 배포 일자는 그 다음으로 넘어가기에 result 리스트에 새로운 수를 추가해주고 1 증가시켜준다.
import math

def solution(progresses, speeds):
    order = []
    for i in range(len(progresses)):
        total = 100 - progresses[i]
        days = math.ceil(total / speeds[i])
        order.append(days)
        
    result = [1]
    for j in range(len(order) - 1):
        if order[j] >= order[j + 1]:
            order[j + 1] = order[j]
            result[-1] += 1
        else:
            result.append(1)
    
    return result

 

사실 효율성 면에서 떨어질 것이라고 생각했는데, 효율성을 채점하는 테스트케이스가 없어서 ㅜㅠ 확인할 수 없었다.. 조금 더 똑똑한 방법이 있지 않을까 생각 중이다.