Menu
CoddyTech

Activity Selection Problem

활동 i는 시간 start[i]부터 시간 finish[i]까지 진행됩니다. 한 사람은 한 번에 하나의 활동만 할 수 있으며, 다음 활동은 이전 활동이 끝난 후에 엄격히 시작해야 합니다. 다른 활동이 끝나는 정확한 시간에 시작하는 활동은 그 활동에 이어서 할 수 없습니다.

한 사람이 할 수 있는 활동의 최대 개수를 반환하세요.

함수

maxActivities(start: integer-array, finish: integer-array) → integer
startinteger-array
각 활동의 시작 시간
finishinteger-array
각 활동의 종료 시각; finish[i]는 start[i]에 해당합니다
반환값integer
한 사람이 차례로 할 수 있는 활동의 최대 개수

제약 조건

  • 1 ≤ start.length == finish.length ≤ 5000
  • 0 ≤ start[i] ≤ finish[i] ≤ 105
  • 활동은 같은 시각에 시작하고 끝날 수 있습니다. 배열은 정렬되어 있지 않습니다.

예제

입력
start = [10, 12, 20, 14, 25, 21]finish = [13, 16, 24, 19, 30, 22]
출력
4
설명
10에서 13까지, 14에서 19까지, 21에서 22까지, 25에서 30까지를 선택하면 4가 됩니다. 5는 불가능합니다. 10에서 13까지는 12에서 16까지와 겹치고, 21에서 22까지는 20에서 24까지와 겹치기 때문입니다.
challenge icon

후속 질문

이제 두 사람이 병렬로 작업하며, 각자 한 번에 하나의 활동을 합니다. 두 사람이 함께 몇 가지 활동을 할 수 있으며, 각 활동은 누가 맡아야 할까요?

코드 초기화
def maxActivities(start, finish):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

start = [10, 12, 20, 14, 25, 21]
finish = [13, 16, 24, 19, 30, 22]

예상 출력

4