[시작, 종료] 형식의 간격 목록이 있다고 가정합니다. 이는 코스의 시작 및 종료 시간을 나타냅니다. 한 번에 하나의 과정만 들을 수 있고 과정의 시작이 마지막 과정의 끝보다 늦어야 한다고 가정할 때 들을 수 있는 최대 과정 수를 찾아야 합니다.
따라서 입력이 시간 =[[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