# You have N tasks to run in any order you want.Each task takes one time step to run. There must be a minimum of K (cooldown value) time steps between two runs of the same task. Write a function that returns the sequence of tasks to run in a minimal amount of time steps. # 1) tasks = ["A", "A", "B"], K = 3 -> ["A", "B", "", "", "A"] # 2) tasks = ["A","A","B","B","C", "C"], K = 1 -> ["A", "B", "C", "A", "B", "C"] # 3) tasks = ["A", "B", "B", "C"], K = 4 -> ["B", "A", "C", "", "", "B"] ``` python from collections import Counter frequency_dict = Counter(tasks) cooldown_dict = {t: 0 for t in set(tasks)} output = [] while all(frequency_dict.values() <= 0): max_freq = -1 curr_task = "" for t, f in frequency_dict.items(): if f > max_freq and cooldown_dict[t] <= 0: curr_task = t max_freq = f cooldown_dict = {t: c-1 for t, c in cooldown_dict.items()} if curr_task: cooldown_dict[curr_task] = K frequency_dict[curr_task] -= 1 output.append(t)