본문 바로가기
Problem Solving/리트코드

[리트코드 leetcode] 621. Task Scheduler

by ggyongi 2021. 4. 17.
반응형

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
 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글