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

파이썬에서 인터벌 시간에 따라 수강할 수 있는 최대 코스 수를 찾는 프로그램은?

<시간/>

[시작, 종료] 형식의 간격 목록이 있다고 가정합니다. 이는 코스의 시작 및 종료 시간을 나타냅니다. 한 번에 하나의 과정만 들을 수 있고 과정의 시작이 마지막 과정의 끝보다 늦어야 한다고 가정할 때 들을 수 있는 최대 과정 수를 찾아야 합니다.

따라서 입력이 시간 =[[3, 6],[6, 9],[7, 8],[9, 11]]과 같으면 출력은 [[3] 과정을 수강할 수 있으므로 3이 됩니다. , 6], [7, 8], [9, 11]]

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

  • 종료 시간을 기준으로 시간 정렬

  • 카운터 :=0, 종료 :=-1

  • 범위 0에서 시간의 크기에 있는 i에 대해

    • times[i, 0]> end가 0이 아니면

      • 카운터 :=카운터 + 1

      • 종료 :=시간[i, 1]

  • 반환 카운터

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

예시

class Solution:
   def solve(self, times):
      times.sort(key=lambda x: x[1])

      counter = 0
      end = -1

      for i in range(len(times)):
         if times[i][0] > end:
            counter += 1
            end = times[i][1]
      return counter

ob = Solution()
times = [
   [3, 6],
   [6, 9],
   [7, 8],
   [9, 11]
]
print(ob.solve(times))

입력

[ [3, 6],[6, 9],[7, 8],[9, 11]]

출력

3