반응형
leetcode.com/problems/task-scheduler/
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
댓글