문제
- 프로그래머스: 기능 개발
- Level 2
- Link
나의 코드
- 각 작업의 남은 일수를 계산하여 순서대로 order 리스트에 추가해준다.
- order 리스트에서:
- i번째 원소가 i + 1번째 원소보다 보다 크거나 같으면, 그 다음 기능들이 i번째 원소와 같은 날 배포가 된다. 한 번에 배포되는 작업 수를 1 증가시켜준다.
- 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
사실 효율성 면에서 떨어질 것이라고 생각했는데, 효율성을 채점하는 테스트케이스가 없어서 ㅜㅠ 확인할 수 없었다.. 조금 더 똑똑한 방법이 있지 않을까 생각 중이다.
'개발공부 > algorithm' 카테고리의 다른 글
[프로그래머스][python] 괄호 변환 - Stack, Recursion (0) | 2021.05.18 |
---|---|
[프로그래머스][python] 타겟넘버 - DFS/BruteForce (0) | 2021.05.18 |
[프로그래머스][python] 짝지어 제거하기 - stack/queue (0) | 2021.05.18 |
[Leetcode][python] 1137. N-th Tribonacci Number - DP (0) | 2021.05.16 |
[Leetcode][python] 938: Range sum BST - BFS (0) | 2021.05.16 |