leetcode.com/problems/task-scheduler/
문제 풀이 방식
Greedy 풀이
주의할 점
이 문제는 가장 많은 task의 count가 idle의 값을 결정할 수 있다는 것을 깨닫는 것이 중요하다.
노트로 최대한 많은 케이스의 문제를 예시로 직접 작성해보면서 규칙을 찾아서 풀려고 노력했다.
소스코드
class Solution {
public int leastInterval(char[] tasks, int n) {
if(n == 0) return tasks.length;
int[] taskCount = new int[26];
for(char task : tasks){
taskCount[task - 'A']++;
}
int max = 0;
int count = 1;
for(int num : taskCount){
if(num == 0) continue;
if(max < num){
max = num;
count = 1;
} else if(max == num){
count++;
}
}
int res = (n+1)*(max-1)+count;
return res >= tasks.length ? res : tasks.length;
}
}
'Leetcode 100문제 도전' 카테고리의 다른 글
[Leetcode 32/100] Next permutation - Medium (0) | 2021.03.06 |
---|---|
[Leetcode 30/100] Minimum Path Sum - Medium (0) | 2021.01.28 |
[Leetcode 29/100] Unique Paths - Medium (0) | 2021.01.28 |
[Leetcode 28/100] Group Anagrams - Medium (0) | 2021.01.25 |
[Leetcode 27/100] Clone Graph - Medium (0) | 2021.01.24 |