Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 모든 작업을 완료하는 데 필요한 최소 시간을 찾는 프로그램

<시간/>

각 값이 작업을 완료하는 데 걸리는 시간 단위를 결정하는 nums라는 숫자 목록이 있다고 가정합니다. 비연속적인 작업은 건너뛸 수 있으며 모든 작업을 완료하는 데 걸리는 최소 시간을 찾아야 합니다.

따라서 입력이 nums =[11, 6, 8, 16]과 같으면 첫 번째 작업과 마지막 작업을 건너뛸 수 있으므로 출력은 14가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • n :=숫자 크기
  • table :=n x 2 행렬을 만들고 0으로 채웁니다.
  • 테이블[0, 0] :=0
  • 테이블[0, 1] :=숫자[0]
  • 1 ~ n - 1 범위의 i에 대해
    • 테이블[i, 0] :=테이블[i - 1, 1]
    • 테이블[i, 1] =(테이블[i - 1, 0] 및 테이블[i - 1][1]의 최소값) + 숫자[i]
  • 테이블 행의 최소값 반환 [n - 1]

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

class Solution:
   def solve(self, nums):
      n = len(nums)
      table = [[0] * 2 for _ in range(n)]

      table[0][0] = 0
      table[0][1] = nums[0]

      for i in range(1, n):
         table[i][0] = table[i - 1][1]
         table[i][1] = min(table[i - 1][0], table[i - 1][1]) + nums[i]

      return min(table[n - 1])

ob = Solution()
nums = [11, 6, 8, 16]
print(ob.solve(nums))

입력

[11, 6, 8, 16]

출력

14