Beberapa waktu lalu saya sempat merasakan beberapa soal pemrograman dari beberapa perusahaan dalam rangka proses mendaftar kerja (coding test). Saat ini kebanyakan perusahaan di bidang IT mewajibkan pelamar untuk mengerjakan sebuah tes membuat program. Tes ini bisa sangat tricky bagi yang tidak pernah melakukannya. Jenis soal pemrograman pada tes ini biasanya mirip dengan soal-soal pada lomba programming, contohnya seperti yang ada pada Hackerrank. Kalian bisa mencoba mengerjakannya terlebih dahulu untuk mencari tahu format soalnya.
Artikel ini diperbarui Februari 2021, dengan penambahan sebuah soal tes kerja yang dipublish di internet
Sejujurnya saya pribadi sempat merasa kaget melihat soal pemrograman yang diberikan karena ternyata tidak semudah yang saya bayangkan (you don’t say). Saya tidak tahu apakah tingkat kesulitan ini juga ditentukan dari posisi yang saya daftar atau semua pendaftar mendapat soal dengan tingkat kesulitan yang sama.
Pada artikel ini saya hanya akan menunjukkan tiga contoh soal pemrograman dari beberapa tes pemrograman untuk mendaftar kerja yang saya peroleh. Dua soal saya peroleh dari perusahaan yang pernah saya daftar (perusahaan IT skala nasional), dan satu soal saya peroleh dari internet yang sempat viral beberapa waktu lalu. Soal yang saya tulis di sini sengaja tidak saya tuliskan 100% mirip dengan soal aslinya (mungkin hanya 75% an mirip) dan saya pun tidak akan menyebutkan perusahaan mana yang memberikan soal ini.
Saya akan memposting artikel lain untuk membahas solusinya agar kalian bisa coba kerjakan terlebih dahulu untuk menguji kemampuan kalian sendiri 🙂 Selamat mencoba!
Soal Pemrograman #1
Diberikan sebuah string yang dapat mengandung huruf (kapital ataupun non-kapital) dan karakter spasi di dalamnya, ubah format string tersebut menjadi format penulisan judul dan format penulisan biasa.
Format penulisan judul menjadikan huruf pertama setiap katanya menjadi kapital sedangkan huruf lainnya tidak, sedangkan format penulisan biasa hanya menjadikan huruf pertama string menjadi kapital dan huruf lainnya tidak.
Contoh Input:
SeLamAT PAGi semua halOo
Contoh Output:
Format Judul: Selamat Pagi Semua Haloo Format Biasa: Selamat pagi semua haloo
Soal Pemrograman #2
Bayangkan sebuah denah rumah tampak atas. Anda diberikan koordinat kartesius pojok-pojok denah rumah tersebut, terurut mengitari rumah hingga kembali ke titik semula (searah jarum jam). Outputkan luas dari rumah tersebut. Diasumsikan sisi rumah selalu sejajar dengan Sumbu X atau Sumbu Y (tidak ada sisi rumah yang miring).
Ilustrasi di bawah merupakan ilustrasi dari Contoh Input yang diberikan di bawah. Perlu diperhatikan, koordinat yang diberikan tidak selalu bermulai pada koordinat (0, 0). Pada input, baris pertama akan diinputkan banyak titik sudut bangun tersebut.

Contoh Input
6 0 0 0 3 3 3 3 1 4 1 4 0
Contoh Output
10
Soal Pemrograman #3
Diberikan sebuah string yang hanya terdiri dari huruf tidak kapital. Dari depan, outputkan panjang setiap substring yang memiliki huruf yang sama. Hmm.. mungkin agak sulit penjelasannya, tapi langsung lihat contohnya saja 🙂
Contoh Input
aaabbcccaaaac
Contoh Output
a = 3 b = 2 c = 3 a = 4 c = 1
Bagaimana? ada ide untuk membuat programnya? Sekalian untuk belajar, kalian bisa coba untuk membuat programnya terlebih dahulu 🙂 sebelum lanjut membaca artikel selanjutnya yang akan membahas solusinya. Pada tes-tes yang saya ikuti, program solusi boleh dibuat dengan bahasa pemrograman apapun dan dipersilahkan untuk mengakses internet.
Soal 1 (python)
s = “SeLamAT PAGi semua halOo”
# Format judul
‘ ‘.join([i.capitalize() for i in s.split()])
# Format biasa
s.lower().capitalize()
Soal 2 (python)
Nyontek solusi ini: https://www.mathopenref.com/coordpolygonarea.html
n = int(input())
x_point = []
y_point = []
for i in range(n):
x, y = list(map(int, input().split()))
x_point.append(x)
y_point.append(y)
sum = 0
for i in range(n):
if i == n-1:
sum += x_point[i]*y_point[0] – y_point[i]*x_point[0]
else:
sum += x_point[i]*y_point[i+1] – y_point[i]*x_point[i+1]
print (abs(sum)/2)
bisa kasih tips untuk bisa membikin program python dengan mudah ?
Untuk format judul bisa dibuat lebih simple dengan
s.title()
oh ya
s.title()juga bisa digunakan, tapi punya celah yang bisa jadi* beda dengan maksud soal, misal diinputkan “halaman google.com” dia akan jadi “Halaman Google.Com”*”bisa jadi” karena ini tergantung yang bikin soal maunya “Google.com” atau “Google.Com”
Menggunakan PHP
<?php
$y=array(0,3,3,1,1,0);
$x=array(0,0,3,3,4,4);
for($i=0; $i < count($y); $i++){
echo '’;
$ru[$i]=$x[$i] * $y[$i+1];
echo ”.$ru[$i].”;
$ta[$i]=$x[$i+1] * $y[$i];
echo ”.$ta[$i].”;
echo ”;
}
$r_ru = array_sum($ru);
$r_ta = array_sum($ta);
$hasil = $r_ta – $r_ru;
echo “Hasil Perhitungan : “.$hasil/2;
?>
Soalnya basic banget unutk no 1 dan 3, masa iya ditanya soal begituan skala nasional ?
yang no.1 iya, yang no.3 itu saya ambil dari pengalaman orang di internet, tapi itu tahun 2019 sih. Dari pengalaman saya memang kadang ada 1 soal yang “hiburan” di tes pemrograman
Ada function nya sebener nya di php bair mudah, tapi kalo mau manual yang terfikirkan begini.
$string = ‘SeLamAT PAGi semua halOo’;
$string = explode(‘ ‘,$string);
function print_biasa($string) {
$return = ”;
foreach($string as $str) {
$first_upper = ”;
for ($i = 0; $i $str) {
$first_upper = ”;
for ($i = 0; $i < strlen($str); $i++) {
$first_upper .= $i == 0 && $key ==0 ? strtoupper($str[$i]) : strtolower($str[$i]);
}
$return .= $first_upper.' ';
}
return ($return);
}
print(print_biasa($string));
print(print_luar_biasa($string));
soal yang no 1.
import java.text.DecimalFormat;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String kalimat = “SeLamAT PAGi semua halOo”;
String[] arr = kalimat.toLowerCase().split(” “);
String[] opo = new String[arr.length];
for (int i = 0; i < arr.length; i++) {
String kata = arr[i];
if (!kata.isEmpty()) {
kata = kata.substring(0,1).toUpperCase() + kata.substring(1);
}
opo[i] = kata;
}
String kalimatBaru = String.join(" ", opo);
System.out.println("Kalimat Judul : "+ kalimatBaru);
System.out.println("Kalimat Biasa : "+ kalimat.toLowerCase());
}
}