Dato un elenco di lavori, che devono essere eseguiti in ordine, ciascuno con uno slot da fare, quanto tempo ci vorrà per eseguirli tutti se dopo aver fatto un lavoro lo stesso lavoro non può essere fatto per i prossimi due slot (raffreddamento degli slot )? Tuttavia, un lavoro diverso può essere assegnato in questo slot di raffreddamento.
Per esempio,
[9,10,9,8] => output: 5
Perché i lavori verranno assegnati come [9 10 _ 9 8]
.
1. Innanzitutto, 9 necessita di due punti di raffreddamento _ _. Quindi iniziamo con 9 _ _
.
2. Il prossimo lavoro 10 è diverso dal precedente 9, quindi possiamo assegnare uno di _ _. Quindi avremo 9 10 _
.
3. In terzo luogo, 9 non può essere assegnato ora, poiché il primo lavoro 9 è lo stesso lavoro e necessita di tempo di raffreddamento. 9 10 _ 9
.
4. Infine, 8 non è uguale agli altri due lavori precedenti, quindi può essere assegnato subito dopo 9 e poiché si tratta dell'ultimo lavoro, non è necessario il tempo di raffreddamento. L'elenco finale è 9 10 _ 9 8
e l'output previsto è 5, ovvero il numero di spot (o il numero di slot)
Casi test:
[1,2,3,4,5,6,7,8,9,10] => output : 10 ([1 2 3 4 5 6 7 8 9 10])
[1,1,1] => output: 7 ([1 _ _ 1 _ _ 1])
[3,4,4,3] => output: 6 ([3 4 _ _ 4 3])
[3,4,5,3] => output: 4 ([3 4 5 3])
[3,4,3,4] => output : 5 ([3 4 _ 3 4])
[3,3,4,4] => output : 8 ([3 _ _ 3 4 _ _ 4])
[3,3,4,3] => output : 7 ([3 _ _ 3 4 _ 3])
[3,2,1,3,-4] => output : 5 ([3 2 1 3 -4])
[] => output : 0 ([])
[-1,-1] => output : 4 ([-1 _ _ -1])
Il valore di input può essere qualsiasi numero intero (negativo, 0, positivo). La lunghezza dell'elenco lavori è 0 <= lunghezza <= 1.000.000.
L'output sarà un numero intero, il numero totale di slot, indicato nel test case come output. L'elenco tra parentesi indica come verrà generato l'output.
Criterio vincente
code-golf
[]
?