본문 바로가기
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

📘 비전공자 개발자 취업 성공기 시리즈

개발자가 되고 싶었던 한 비전공자의 1년 4개월 이야기
막막했던 시작부터 좌절, 그리고 합격까지의 여정을 기록했습니다

 

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

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

kmong.com

댓글