작업 목록과 다른 사람 목록이 있다고 가정합니다. 작업[i]은 i번째 작업을 수행하는 데 필요한 강도의 양을 결정합니다. 그리고 people[i]은 i번째 사람이 가지고 있는 힘의 양을 결정합니다. 마지막으로 한 사람이 최대 하나의 작업을 수행할 수 있는 경우 완료할 수 있는 작업의 수를 찾아야 합니다.
따라서 입력이 task =[4, 3, 9, 15], people =[10, 5, 3, 2]인 경우 첫 번째 사람이 작업 9를 수행할 수 있고 두 번째 사람이 수행할 수 있으므로 출력은 3이 됩니다. 작업 4를 수행하고, 세 번째 사람은 작업 3을 수행할 수 있으며, 네 번째 사람은 작업을 수행할 수 없습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 목록 작업 정렬, 목록 사람들 정렬
- ct:=0, ind:=0
- 범위 0에서 사람 크기까지의 경우 다음을 수행합니다.
- 작업의 크기와 범위에 있는 j에 대해 다음을 수행합니다.
- 사람[i]>=작업[j]이면
- ct :=ct + 1
- ind :=ind + 1
- 루프에서 나오다
- 그렇지 않으면
- 루프에서 나오다
- 사람[i]>=작업[j]이면
- 작업의 크기와 범위에 있는 j에 대해 다음을 수행합니다.
- ct를 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class Solution: def solve(self, tasks, people): tasks.sort() people.sort() ct=0 ind=0 for i in range(len(people)): for j in range(ind,len(tasks)): if people[i]>=tasks[j]: ct+=1 ind+=1 break else: break return ct ob = Solution() tasks = [4, 3, 9, 15] people = [10, 5, 3, 2] print(ob.solve(tasks, people))
입력
[4, 3, 9, 15], [10, 5, 3, 2]
출력
3