Saya perlu menelepon teman-teman saya tetapi tombol-tombol telepon nirkabel saya tidak berfungsi dengan baik. Satu-satunya tombol yang dapat saya tekan adalah [Atas], [Bawah] dan [Panggilan]. [Atas] dan [Bawah] dapat digunakan untuk menavigasi dalam panggilan terakhir saya dan [Panggilan] dapat digunakan untuk memanggil nama yang dipilih. Ponsel saya memiliki daftar yang menahan N
panggilan terakhir, dan saya tahu bahwa semua teman yang perlu saya hubungi ada dalam daftar ini.
Tugas:
Anda akan menerima nomor N
dan daftar nama L
:
N
apakah jumlah panggilan terakhir yang dapat diingat telepon saya;L
memiliki nama dalam urutan yang harus saya panggil.
Anda harus menampilkan jumlah penekanan tombol yang harus saya buat dalam pengaturan optimal dari daftar panggilan terakhir.
Contoh:
-> Input:
Memanggil Anna, Bob dan kemudian Anna lagi. Dengan daftar panggilan ukuran 5 terbaru.
5
Anna
Bob
Anna
-> Output:
Kemungkinan pengaturan optimal: Anna, Foo, Bar, Foobar, Bob
5 # Key presses: [Call] Anna, [Up] + [Call] Bob, [Down] + [Call] Anna
Lebih banyak kasus uji:
Input: 5, Anna, Bob, Carl
Output: 5
Input: 5, Anna, Bob, Carl, Anna
Output: 8
Input: 5, A, B, C, D, E, A
Output: 11
Input: 6, A, B, C, D, E, A
Output: 12
Input: 4, A, B, C, B, A
Output: 10
Aturan:
- Kursor Anda akan selalu mulai di posisi pertama daftar;
- Anda dapat mengambil input
N
danL
dari sumber apa pun: keyboard, parameter, file, dll; - Nama-nama dalam daftar dapat dalam format apa pun yang masuk akal seperti: string, integer, chars;
- Saat Anda mencapai akhir daftar panggilan terakhir dan menekan [Bawah] lagi, kursor Anda akan berputar. Hal yang sama terjadi ketika Anda berada di awal daftar panggilan terakhir dan menekan [Atas];
- Ketika Anda memanggil seseorang, nama orang itu akan dipindahkan ke posisi pertama dari daftar panggilan terakhir dan sisanya akan didorong ke bawah;
- Saat Anda memanggil seseorang, kursor Anda akan dipindahkan ke posisi pertama;
- Nama teman tidak dapat muncul lebih dari satu kali dalam daftar panggilan terakhir;
- Anda dapat mengisi daftar panggilan terakhir dengan entri tiruan (lihat contoh);
- Jumlah teman yang akan dihubungi tidak akan lebih dari
N
.
sumber
x=[x[a]]+x[:a]+x[a+1:]
ditugaskanx
ke objek daftar baru.i
masih akan menjadiindex
metode pada objek daftar lamax.index
.JavaScript (SpiderMonkey) ,
213143 byteCobalah online!
Menghasilkan pengaturan optimal dari nama-nama yang diberikan kemudian menghitung jumlah penekanan tombol.Melewati generasi dan hanya menghitung berapa banyak penekanan tombol yang dibutuhkan setiap nama dalam pengaturan optimal
sumber