150+ Soal OSN Informatika / Komputer 2026 & Kunci Jawaban Lengkap

Share ke:

Olimpiade Sains Nasional (OSN) bidang Informatika/Komputer merupakan ajang kompetisi sains bergengsi yang menguji ketajaman logika dan computational thinking. Berbeda dari mata pelajaran berbasis hafalan, bidang ini berfokus pada pemecahan masalah (problem solving), kombinatorika, serta pemahaman dasar algoritma dan struktur data.

Ajang ini diselenggarakan secara rutin setiap tahun oleh Balai Pengembangan Talenta Indonesia (BPTI) melalui beberapa tahapan seleksi. Rangkaian seleksi dimulai dari tingkat Kabupaten/Kota (OSN-K) pada sekitar bulan Maret–April, tingkat Provinsi (OSN-P) pada bulan Juni, hingga puncaknya tingkat Nasional (OSN) yang berlangsung pada bulan Agustus–September.

Untuk membantu persiapan belajar secara terstruktur dan efektif, berikut disajikan rangkuman kisi-kisi materi resmi terbaru beserta kumpulan contoh soal latihan yang dilengkapi dengan kunci jawaban dan pembahasan terperinci.

Kisi-Kisi OSN Informatika

Kisi-kisi OSN Informatika dirancang secara terpadu mengacu pada standar resmi. Materi kompetisi ini berfokus pada daya nalar matematis, logika analitis, hingga dasar-dasar pemrograman kompetitif yang menuntut peserta mampu merancang solusi algoritma secara efisien dan terstruktur.

Berikut adalah 5 bab utama beserta sub-materi yang diujikan dalam OSN Informatika:

1. Berpikir Komputasional (Computational Thinking)

  • Analisis Logika Soal Cerita: Pemodelan skenario masalah nyata ke dalam konsep komputasi sederhana.
  • Simulasi & Strategi Permainan: Menentukan pola terbaik, kondisi menang/kalah, dan jumlah langkah minimum.
  • Pola & Deduksi Logis: Mengidentifikasi hubungan antar elemen serta penarikan kesimpulan yang valid.

2. Matematika Diskrit & Teori Bilangan

  • Logika Proposisi: Aljabar Boolean, tabel kebenaran, hukum De Morgan, serta gerbang logika.
  • Kombinatorika Lanjutan: Permutasi, kombinasi, Pigeonhole Principle (Prinsip Sarang Burung), dan Inclusion-Exclusion Principle.
  • Teori Bilangan: Aritmetika modulo, FPB/KPK (Algoritma Euklides), keterbagian, dan pengujian bilangan prima.
  • Peluang Diskrit: Perhitungan kemungkinan kejadian dalam himpunan terbatas.

3. Pemrograman Dasar (Bahasa C++)

  • Sintaksis & Kontrol Alur: Struktur program C++, masukan/keluaran, percabangan (if-else, switch), dan perulangan (for, while, do-while).
  • Tipe Data & Array: Penggunaan tipe data primitif, array satu/dua dimensi (matriks), serta manipulasi karakter dan string.
  • Fungsi & Scope Variabel: Deklarasi fungsi, penanganan parameter (pass-by-value dan pass-by-reference), serta pemahaman variabel lokal dan global.

4. Algoritma Rekursif & Penelusuran Kode (Trace Code)

  • Fungsi Rekursif: Analisis base case, recursive step, dan pemanggilan fungsi berulang.
  • Penelusuran Jalur Eksekusi: Menganalisis dan menebak keluaran (output) dari suatu potongan kode program secara manual.
  • Relasi Rekurens: Perhitungan hasil akhir dari fungsi matematika yang terdefinisi secara rekursif.

5. Algoritma, Struktur Data, & Graf Dasar

  • Pencarian & Pengurutan: Algoritma Linear Search, Binary Search, serta teknik sorting dasar (Bubble, Selection, dan Merge Sort).
  • Struktur Data Linear: Konsep dasar Stack (Tumpukan) dan Queue (Antrean).
  • Teori Graf Dasar: Pengenalan simpul (node/vertex), sisi (edge), derajat simpul, serta representasi graf sederhana.
  • Analisis Kompleksitas: Mengukur tingkat efisiensi waktu dan memori algoritma menggunakan notasi Big-O.

Contoh Soal HOTS OSN Informatika 

Berikut ini adalah kumpulan contoh soal HOTS OSN Informatika yang dirancang untuk melatih logika berpikir komputasional dan analisis pemecahan masalah. Setiap soal dilengkapi kunci jawaban dan pembahasan terperinci untuk membantu kamu menguasai materi secara mendalam.

Soal 1 – Berpikir Komputasional

Di sebuah jaringan komputer, terdapat 8 komputer yang terhubung dalam bentuk lingkaran. Setiap menit, sebuah paket data di komputer i akan dikirimkan secara acak ke salah satu dari dua komputer tetangganya dengan peluang yang sama (1/2 ke kanan, 1/2 ke kiri). Jika mula-mula paket data berada di Komputer 0, berapa peluang paket data tersebut mengunjungi seluruh komputer lainnya sekurang-kurangnya satu kali dan berakhir tepat di Komputer 4?

A. 1/7

B. 1/4

C. 1/2

D. 1/8

E. 1/16

Jawaban: A

Pembahasan:

Masalah ini dapat diselesaikan menggunakan sifat Random Walk pada graf lingkaran (Cycle Graph C_N).

Pada sebuah jalan acak di graf lingkaran C_N yang dimulai dari suatu titik asal S:

Peluang bahwa titik V menjadi titik terakhir yang dikunjungi dari seluruh titik yang ada di lingkaran tersebut tepat sama dengan 1 / (N – 1) untuk setiap titik V ≠ S.

Dalam soal ini:

  • Jumlah total komputer N = 8.
  • Titik awal S = Komputer 0.
  • Titik tujuan akhir V = Komputer 4.

Maka, peluang Komputer 4 menjadi komputer terakhir yang dikunjungi setelah semua komputer lainnya dikunjungi adalah:

Peluang = 1 / (8 – 1) = 1/7

Soal 2 – Matematika Diskrit & Teori Bilangan

Diberikan sebuah fungsi F(n) = (n^3 + 2n) mod 6 untuk bilangan bulat positif n. Jika dipilih sebuah bilangan bulat positif n secara acak dari rentang 1 ≤ n ≤ 2024, berapakah banyaknya nilai n yang memenuhi F(n) = 0?

A. 1012

B. 2024

C. 674

D. 337

E. 1349

Jawaban: A

Pembahasan:

Analisis nilai dari F(n) = (n^3 + 2n) mod 6.

Bentuk n^3 + 2n dapat diubah menjadi:

n^3 + 2n = n^3 – n + 3n = n(n – 1)(n + 1) + 3n

Perhatikan dua suku tersebut:

  1. n(n – 1)(n + 1) adalah perkalian 3 bilangan bulat berurutan, sehingga selalu habis dibagi oleh 3! = 6. Artinya, n(n – 1)(n + 1) mod 6 = 0.
  1. Suku 3n:

Jika n genap (n = 2k), maka 3n = 6k, yang berarti 3n mod 6 = 0.

Jika n ganjil (n = 2k + 1), maka 3n mod 6 = 3.

Uji sisa n mod 6:

  • n mod 6 = 0 ⇒ 0^3 + 2(0) = 0 mod 6 = 0
  • n mod 6 = 1 ⇒ 1^3 + 2(1) = 3 mod 6 = 3
  • n mod 6 = 2 ⇒ 2^3 + 2(2) = 12 mod 6 = 0
  • n mod 6 = 3 ⇒ 3^3 + 2(3) = 33 mod 6 = 3
  • n mod 6 = 4 ⇒ 4^3 + 2(4) = 72 mod 6 = 0
  • n mod 6 = 5 ⇒ 5^3 + 2(5) = 135 mod 6 = 3

F(n) = 0 terjadi jika dan hanya jika n genap (n mod 6 bernilai 0, 2, atau 4).

Banyaknya bilangan genap dari 1 hingga 2024 adalah 2024 / 2 = 1012.

Soal 3 – Pemrograman Dasar (Bahasa C++)

Perhatikan potongan kode program C++ berikut:

int hitung(int a, int b) {

if (b == 0) return 0;

if (b % 2 == 0) return hitung(a + a, b / 2);

return hitung(a + a, b / 2) + a;

}

Berapakah keluaran (output) dari pemanggilan fungsi hitung(7, 25)?

A. 150

B. 168

C. 200

D. 175

E. 182

Jawaban: D

Pembahasan:

Fungsi hitung(a, b) mengimplementasikan algoritma perkalian peka bit (Russian Peasant Multiplication) yang menghitung nilai a × b secara rekursif.

Telusuri pemanggilan rekursi untuk hitung(7, 25):

  1. hitung(7, 25): b = 25 (ganjil) ⇒ hitung(14, 12) + 7
  1. hitung(14, 12): b = 12 (genap) ⇒ hitung(28, 6)
  1. hitung(28, 6): b = 6 (genap) ⇒ hitung(56, 3)
  1. hitung(56, 3): b = 3 (ganjil) ⇒ hitung(112, 1) + 56
  1. hitung(112, 1): b = 1 (ganjil) ⇒ hitung(224, 0) + 112
  1. hitung(224, 0): b = 0 ⇒ kembalikan 0

Evaluasi dari bawah ke atas:

  • hitung(112, 1) = 0 + 112 = 112
  • hitung(56, 3) = 112 + 56 = 168
  • hitung(28, 6) = 168
  • hitung(14, 12) = 168
  • hitung(7, 25) = 168 + 7 = 175

Keluaran program = 175 (yaitu 7 × 25).

Soal 4 – Algoritma Rekursif & Penelusuran Kode

Diberikan sebuah fungsi rekursif C++ sebagai berikut:

int g(int n) {

if (n <= 1) return 1;

int res = 0;

for (int i = 0; i < n; i++) {

res += g(i) * g(n – 1 – i);

}

return res;

}

Berapakah nilai pengembalian dari pemanggilan fungsi g(4)?

A. 10

B. 14

C. 5

D. 42

E. 20

Jawaban: B

Pembahasan:

Fungsi g(n) di atas menghitung bilangan Catalan ke-n (C_n).

Hitung nilai g(n) secara berurutan mulai dari dasar:

  • g(0) = 1
  • g(1) = 1

Untuk g(2):

i = 0: g(0) × g(1) = 1 × 1 = 1

i = 1: g(1) × g(0) = 1 × 1 = 1

g(2) = 1 + 1 = 2

Untuk g(3):

i = 0: g(0) × g(2) = 1 × 2 = 2

i = 1: g(1) × g(1) = 1 × 1 = 1

i = 2: g(2) × g(0) = 2 × 1 = 2

g(3) = 2 + 1 + 2 = 5

Untuk g(4):

i = 0: g(0) × g(3) = 1 × 5 = 5

i = 1: g(1) × g(2) = 1 × 2 = 2

i = 2: g(2) × g(1) = 2 × 1 = 2

i = 3: g(3) × g(0) = 5 × 1 = 5

g(4) = 5 + 2 + 2 + 5 = 14

Soal 5 – Algoritma & Graf Dasar

Sebuah graf terhubung tanpa arah memiliki 10 simpul dan 15 sisi. Jika dilakukan pencarian simpul menggunakan algoritma Depth-First Search (DFS) dan Breadth-First Search (BFS), pohon pembangun (spanning tree) yang dihasilkan dari kedua algoritma tersebut masing-masing akan selalu memiliki jumlah sisi sebanyak…

A. 9 sisi untuk DFS dan 9 sisi untuk BFS

B. 15 sisi untuk DFS dan 10 sisi untuk BFS

C. 10 sisi untuk DFS dan 9 sisi untuk BFS

D. 9 sisi untuk DFS dan 15 sisi untuk BFS

E. Bervariasi tergantung simpul awal yang dipilih

Jawaban: A

Pembahasan:

Secara teori graf, pohon (tree) dengan V simpul selalu memiliki tepat (V – 1) sisi.

Pohon pembangun (spanning tree) dari sebuah graf terhubung dengan V simpul, baik yang dibentuk melalui penelusuran DFS (DFS Tree) maupun BFS (BFS Tree), harus mencakup seluruh V simpul tanpa membentuk sirkuit/siklus.

Diketahui jumlah simpul V = 10.

Maka banyaknya sisi pada pohon pembangun DFS maupun BFS adalah:

Jumlah sisi = V – 1 = 10 – 1 = 9 sisi.

Soal 6 – Berpikir Komputasional & Kombinatorika

Di sebuah papan catur berukuran 8×8, sebuah bidak berada di pojok kiri bawah (baris 1, kolom 1). Bidak tersebut hanya boleh bergerak 1 langkah ke atas atau 1 langkah ke kanan pada setiap langkahnya. Namun, terdapat ranjau di kotak (baris 4, kolom 4) dan kotak (baris 6, kolom 6) yang tidak boleh diinjak sama sekali. Banyaknya jalur aman yang mungkin untuk membawa bidak tersebut sampai ke pojok kanan atas (baris 8, kolom 8) adalah…

A. 1.250

B. 1.584

C. 1.892

D. 2.116

E. 3.432

Jawaban: B

Pembahasan:

Gunakan Prinsip Inklusi-Eksklusi (PIE) pada kisi kombinatorika (Langkah total dari (x1, y1) ke (x2, y2) adalah C((x2-x1) + (y2-y1), x2-x1)).

  1. Total jalur dari (1,1) ke (8,8) tanpa halangan:
  2. Langkah = 7 Kanan, 7 Atas (Total 14 langkah).
  3. N(Total) = C(14, 7) = 3.432.
  1. Jalur yang melalui Ranjau A (4,4):

Dari (1,1) ke (4,4): C(6, 3) = 20.

Dari (4,4) ke (8,8): C(8, 4) = 70.

N(A) = 20 × 70 = 1.400.

Dari (6,6) ke (8,8): C(4, 2) = 6.

N(B) = 252 × 6 = 1.512.

6. Jalur yang melalui KEDUA ranjau (A lalu B):

Dari (1,1) ke (4,4): C(6, 3) = 20.

Dari (4,4) ke (6,6): C(4, 2) = 6.

Dari (6,6) ke (8,8): C(4, 2) = 6.

5. Jalur yang melalui Ranjau B (6,6):

Dari (1,1) ke (6,6): C(10, 5) = 252.

N(A ∩ B) = 20 × 6 × 6 = 720.

7. Dengan Prinsip Inklusi-Eksklusi:

8. Ranjau Total = N(A) + N(B) – N(A ∩ B)

9. Ranjau Total = 1.400 + 1.512 – 720 = 2.192.

10. Jalur Aman:

Jalur Aman = N(Total) – Ranjau Total

Jalur Aman = 3.432 – 2.192 = 1.240.

Soal 7 – Matematika Diskrit & Teori Bilangan

Berapakah sisa pembagian dari 3^2026 jika dibagi oleh 13?

A. 3

B. 9

C. 1

D. 4

E. 12

Jawaban: D

Pembahasan:

Gunakan Teorema Kecil Fermat:

Jika p adalah bilangan prima dan gcd(a, p) = 1, maka a^(p-1) mod p = 1.

Dalam soal ini:

a = 3 dan p = 13 (13 adalah bilangan prima).

Maka: 3^12 mod 13 = 1.

Sederhanakan pangkat 2026 terhadap modulo 12:

2026 = 12 × 168 + 10.

Artinya, 2026 mod 12 = 10.

Sehingga:

3^2026 mod 13 = 3^10 mod 13.

Hitung pola 3^10 mod 13:

  • 3^1 mod 13 = 3
  • 3^2 mod 13 = 9
  • 3^3 mod 13 = 27 mod 13 = 1
  • (Karena 3^3 mod 13 = 1, maka siklusnya sebenarnya berulang setiap 3 pangkat).

Sederhanakan pangkat 10 terhadap modulo 3:

10 mod 3 = 1.

Maka:

3^10 mod 13 = 3^1 mod 13 = 3.

Soal 8 – Pemrograman Dasar (Bahasa C++)

Perhatikan potongan fungsi rekursif C++ berikut:

int aksi(int n) {

if (n <= 0) return 0;

if (n % 2 == 1) return n + aksi(n – 1);

return aksi(n / 2);

}

Berapakah nilai pengembalian dari pemanggilan fungsi aksi(18)?

A. 18

B. 27

C. 9

D. 0

E. 13

Jawaban: E

Pembahasan:

Mari telusuri panggilan fungsi aksi(18) langkah demi langkah:

  1. aksi(18): 18 genap ⇒ kembalikan aksi(18 / 2) = aksi(9)
  1. aksi(9): 9 ganjil ⇒ kembalikan 9 + aksi(8)
  1. aksi(8): 8 genap ⇒ kembalikan aksi(8 / 2) = aksi(4)
  1. aksi(4): 4 genap ⇒ kembalikan aksi(4 / 2) = aksi(2)
  1. aksi(2): 2 genap ⇒ kembalikan aksi(2 / 2) = aksi(1)
  1. aksi(1): 1 ganjil ⇒ kembalikan 1 + aksi(0)
  1. aksi(0): n <= 0 ⇒ kembalikan 0

Evaluasi nilai dari bawah ke atas:

  • aksi(1) = 1 + 0 = 1
  • aksi(2) = aksi(1) = 1
  • aksi(4) = aksi(2) = 1
  • aksi(8) = aksi(4) = 1
  • aksi(9) = 9 + aksi(8) = 9 + 1 = 10
  • aksi(18) = aksi(9) = 10

Soal 9 – Algoritma Rekursif & Penelusuran Kode

Perhatikan fungsi C++ di bawah ini:

int ubah(int x, int y) {

if (y == 0) return x;

return ubah(y, x % y);

}

Jika dipanggil ubah(126, 84), berapa kalakah fungsi ubah tersebut dipanggil (termasuk pemanggilan awal)?

A. 3 kali

B. 4 kali

C. 5 kali

D. 2 kali

E. 6 kali

Jawaban: B

Pembahasan:

Fungsi ubah(x, y) di atas mengimplementasikan Algoritma Euklides untuk mencari FPB (Faktor Persekutuan Terbesar) dari dua bilangan.

Mari hitung urutan panggilan fungsi secara beruntun:

  1. Panggilan ke-1: ubah(126, 84) ⇒ y != 0, hitung 126 % 84 = 42 ⇒ memanggil ubah(84, 42)
  1. Panggilan ke-2: ubah(84, 42) ⇒ y != 0, hitung 84 % 42 = 0 ⇒ memanggil ubah(42, 0)
  1. Panggilan ke-3: ubah(42, 0) ⇒ y == 0, mengembalikan nilai x (42).

Total pemanggilan fungsi dari awal hingga selesai adalah 3 kali.

Soal 10 – Algoritma & Graf Dasar

Diberikan sebuah graf lengkap tanpa arah K_5 (graf yang memiliki 5 simpul dan setiap pasang simpul terhubung oleh satu sisi). Banyaknya pohon pembangun (spanning tree) berbeda yang dapat dibentuk dari graf K_5 tersebut adalah…

A. 125

B. 16

C. 120

D. 25

E. 64

Jawaban: A

Pembahasan:

Gunakan Formula Cayley (Cayley’s Formula) untuk menghitung banyaknya pohon pembangun pada graf lengkap dengan n simpul.

Rumus Formula Cayley:

Jumlah Spanning Tree = n^(n – 2)

Diketahui n = 5 (karena graf K_5):

Jumlah Spanning Tree = 5^(5 – 2)

Jumlah Spanning Tree = 5^3 = 125.

Maka, banyaknya pohon pembangun berbeda yang dapat dibentuk adalah 125.

Bedah Lebih Banyak Variasi Soal OSN Informatika Beserta Pembahasannya Disini!

banner Soal OSN Informatika + Kisi-Kisi Terbaru

Lanjutkan persiapan menghadapi OSN Informatika di utbk.or.id dengan mengerjakan lebih banyak latihan soal yang variatif dan dilengkapi pembahasan. Latihan secara konsisten dapat membantu memperkuat pemahaman algoritma, logika, struktur data, serta kemampuan berpikir komputasional. Pelajari strategi penyelesaian dari berbagai tipe soal, evaluasi kemampuan Anda, dan tingkatkan kesiapan untuk menghadapi OSN Informatika di setiap jenjang kompetisi.

FAQ Seputar soal osn informatika

Q: Bahasa pemrograman apa yang digunakan pada OSN Informatika?
A: Bahasa resmi yang digunakan pada kompetisi OSN Informatika dan TOKI adalah C++ (C++17/20).

Q: Apakah pemula tanpa latar belakang coding bisa ikut OSN Informatika?
A: Bisa, karena seleksi tahap awal (OSN-K) banyak berfokus pada penalaran logika deduktif, analitis, dan aritmetika modular.

Rekomendasi Soal Latihan Terkait:

Facebook
Twitter
LinkedIn
WhatsApp
X
Cara Mudah Beli Paket Soal!
Kategori

Ikuti Simulasi Tryout berbasis CBT, Gratis!

Butuh Bantuan?