Bahasa Indonesia | English

Kisah Tentang Seleksi Programmer pada Sebuah Software House

06 October 2022 657


BPPTIK – Sebuah software house membuka lowongan kerja untuk programmer. Untuk mencari programmer, perusahaan tersebut melakukan seleksi melalui surel. Setiap pelamar diberi soal dan diharuskan mengirimkan jawabannya melalui surel. Soal yang diberikan adalah sebagai berikut:

Diberikan sebuah array harga saham setiap 10 menit dalam 1 hari berurutan, mulai pasar saham buka hingga tutup. Tuliskan sebuah fungsi untuk mencari keuntungan (harga jual dikurangi harga beli) maksimal yang dimungkinkan dari array harga tersebut.

Contoh:

Masukan: [9, 8, 9, 7, 8, 5, 9, 4, 6, 10, 2, 4, 6]

Keluaran: 6

Catatan: 6 = Harga jual 10 – harga beli 4

function CariProfitMaksimal(masukan)

{

/*

tambahkan code kamu

*/

return keluaran;

}

Sekilas soal ini tampak mudah. Anda hanya perlu mencari nilai maksimum (untuk harga jual) dan nilai minimum (untuk harga beli) dari array masukan, lalu menghitung selisihnya. Inilah jawaban yang dikemukakan oleh sebagian besar pelamar. Bila Anda menjawab seperti itu juga, berarti, Anda tidak lolos.

Bila Anda membaca soalnya secara teliti, Anda akan menyadari bahwa nilai minimum array di atas bukanlah 4, melainkan 2. Tapi mengapa harga beli yang dihitung adalah 4? Ternyata di sinilah ujian yang sebenarnya. Ada yang mengatakan soalnya salah dan meralatnya dengan mengatakan harga beli yang benar adalah 2; ada yang marah-marah karena tidak mengerti soalnya; yang paling parah, ada yang menolak untuk menjawab dan mengirimkan balasan berupa jawaban untuk soal lain.

Perusahaan tersebut sengaja memberi soal dengan spesifikasi yang kurang jelas. Ia mencari programmer yang tidak segan untuk bertanya bila menemukan persoalan yang membutuhkan penjelasan lebih lanjut dan tidak membuat asumsi sendiri. Dan inilah yang dilakukan oleh sebagian kecil pelamar; mereka bertanya mengapa nilai minimum array di atas adalah 4 dan bukan 2.

Ternyata, pada soal di atas penjualan hanya dapat dilakukan setelah pembelian. Dengan kata lain, seseorang hanya dapat menjual saham setelah ia membelinya. Dalam hal ini, nilai 4 (harga beli) diambil dari indeks array ke-8 dan nilai 10 (harga jual) diambil dari indeks array ke-10.

Setelah diberi penjelasan di atas, barulah para pelamar yang tersisa bisa menjawabnya. Ada yang mengemukakan solusi secara brute force (dengan cara membandingkan setiap elemen array satu per satu) yang memiliki kompleksitas O(n2). Ada juga yang mengemukakan solusi dengan kompleksitas O(n) yang lebih efisien.

Alhasil, dari 60-an lulusan D3-S1 yang melamar, hanya tiga orang yang lulus seleksi; satu di antaranya bahkan adalah lulusan SMK. (bpptik/efn/lpa/hdn)