public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] tasks = {'C','D','D','H'};
int coolingInterval = 2;
System.out.println(leastInterval(tasks, coolingInterval));
}
public static int leastInterval(char[] tasks, int n) {
int[] counter = new int[3];
for(char task : tasks){
counter[task-'A']++;
}
Arrays.sort(counter);
int time = 0;
while(counter[2]>0){
int i=0, j=2;
while(i<=n && counter[j]>0){
counter[j]--;
time++;
i++;
j = j==0?2:j-1;
}
Arrays.sort(counter);
if(counter[2]==0){
break;
}
time = time + (n - i + 1); // if left over tasks is less than 'n'
}
return time;
}
}