leetcode.com/problems/task-scheduler/
Task Scheduler - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
2시간 고생해서 heap으로 풀어냈다. 하지만 너무 1차원적인 풀이라서 시간이 매우 오래 걸렸다..
class Solution:
def leastInterval(self, tasks: List[str], n: int) -> int:
wait = {}
for task in tasks:
wait[task]=0
counter = collections.Counter(tasks)
result = 0
while counter:
heap = []
for task in wait:
if wait[task]==0: ## possible task
heapq.heappush(heap, [-counter[task],task] )
if heap:
task = heapq.heappop(heap)[1]
counter[task] -=1
wait[task]= n+1
if counter[task]==0:
counter += collections.Counter()
for task in wait:
if wait[task] > 0:
wait[task] -=1
result +=1
return result
댓글