2.7 KiB
2.7 KiB
Jumlah_Jam_Kerja
🕒 Perhitungan Jumlah Jam Kerja Karyawan
📘 Deskripsi Soal
Soal ini berkaitan dengan perhitungan jumlah total jam kerja karyawan dalam satu hari berdasarkan jam masuk dan jam keluar. Sistem perhitungan dibagi menjadi dua kategori: jam kerja normal dan jam lembur. Jam kerja normal ditetapkan selama maksimal 8 jam. Jika karyawan bekerja lebih dari 8 jam, maka kelebihannya dianggap sebagai lembur dengan perhitungan nilai lembur berdasarkan sistem bobot sebagai berikut:
- Jam lembur pertama: dikalikan 1
- Jam lembur kedua: dikalikan 2
- Jam lembur ketiga dan seterusnya: dikalikan 3
Total jam kerja efektif dalam sehari adalah jumlah dari jam kerja normal (maksimal 8 jam) dan nilai jam lembur yang dihitung berdasarkan aturan di atas.
📊 Contoh Soal
Input:
7 10 10 20 1 10
Output:
h#1: 3 h#2: 11 h#3: 9
Penjelasan:
- 7 10 → Total kerja 3 jam → semua jam normal → total = 3
- 10 20 → Total kerja 10 jam → 8 jam normal + 2 lembur
- Lembur: 1×1 + 1×2 = 3 → total = 8 + 3 = 11
- 1 10 → Total kerja 9 jam → 8 jam normal + 1 lembur
- Lembur: 1×1 = 1 → total = 8 + 1 = 9
📌 Batasan Soal
- Input terdiri dari dua angka per baris:
jam_masuk
danjam_keluar
- Pemisah antara angka adalah spasi (
- Nilai jam dalam rentang 0–23
jam_keluar > jam_masuk
- Tidak ada input invalid (dijamin valid)
- Jumlah entri bisa lebih dari satu baris
🧠 Strategi Penyelesaian
- Baca dan parsing input sebagai pasangan
jam_masuk
danjam_keluar
. - Hitung total jam kerja sebagai
total_jam = jam_keluar - jam_masuk
. - Jika
total_jam <= 8
, maka semua dihitung sebagai jam normal. - Jika lebih dari 8, maka:
- 8 jam pertama = jam normal
- Sisanya = jam lembur
- Hitung nilai lembur berdasarkan aturan bobot:
- Jam lembur pertama dikali 1
- Jam lembur kedua dikali 2
- Jam lembur ke-3 dan seterusnya dikali 3
- Jumlahkan
jam_normal + nilai_lembur
untuk mendapatkan total nilai jam kerja efektif. - Ulangi proses untuk setiap baris data.
💻 Contoh Kode (Python)
def hitung_jam_kerja(jam_masuk, jam_keluar):
total_jam = jam_keluar - jam_masuk
if total_jam <= 8:
return total_jam
else:
lembur = total_jam - 8
lembur_total = 0
if lembur >= 1:
lembur_total += 1 * 1
if lembur >= 2:
lembur_total += 1 * 2
if lembur > 2:
lembur_total += (lembur - 2) * 3
return 8 + lembur_total
data = [
(7, 10),
(10, 20),
(1, 10),
]
for i, (masuk, keluar) in enumerate(data, start=1):
total = hitung_jam_kerja(masuk, keluar)
print(f"h#{i}: {total}")
Hasil output:
h#1: 3
h#2: 11
h#3: 9