Ringkasan & Trade-off — Algoritma

Setiap algoritma punya trade-off — tidak ada yang sempurna. Skill seorang programmer adalah memilih trade-off yang tepat untuk situasi tertentu. Time vs Space P

Setiap algoritma punya trade-off — tidak ada yang sempurna. Skill seorang programmer adalah memilih trade-off yang tepat untuk situasi tertentu.

Time vs Space

Pendekatan Time Space Contoh
Brute force O(n²) O(1) Two sum with nested loops
Hash map O(n) O(n) Two sum with hash
Memoization O(n) O(n) Fibonacci with cache
Iteratif O(n) O(1) Fibonacci with 2 variables

Panduan Memilih Algoritma

Pertanyaan yang harus dijawab:

  1. Seberapa besar datanya? (n)
  2. Apakah data sudah terurut?
  3. Butuh solusi optimal atau cukup "cukup baik"?
  4. Batasan memori?
  5. Real-time atau batch processing?

Rule of thumb berdasarkan n:

n Max O Strategi
≤ 10 O(n!) Brute force, backtracking
≤ 20 O(2ⁿ) Bitmask DP
≤ 500 O(n³) DP 3D
≤ 5.000 O(n²) DP 2D, brute force OK
≤ 100.000 O(n log n) Sort-based, binary search
≤ 1.000.000 O(n) Linear scan, hash map
> 1.000.000 O(log n) Binary search, math

Ringkasan Semua Teknik

Teknik Kapan Pakai
Sorting Data perlu diurutkan untuk optimasi
Binary Search Data terurut, cari elemen/boundary
Two Pointer Pair/triplet di sorted array
Sliding Window Subarray/substring berturut-turut
Hash Map Pencarian O(1), counting
Recursion Tree/graph, masalah rekursif
DP Overlapping subproblems
Greedy Locally optimal = globally optimal
Backtracking Semua kombinasi, constraint satisfaction
D&C Masalah bisa dipecah independen

Selamat! Kamu sekarang punya fondasi yang kuat dalam algoritma dan struktur data. Terus latih dengan soal-soal praktis!

🎭 Analogi sehari-hari: Belajar masak. Awalnya hafal resep satu-satu. Lama-lama, kamu paham konsep — kapan deep fry vs sauté, kapan add salt early vs late. Algoritma sama: awalnya hafal merge sort, quick sort. Lama-lama paham pattern — divide & conquer, greedy, DP. Pattern lebih penting dari hafalan.

💡 Skill paling penting yang dilatih:

  1. Recognize pattern — "Ini Two Sum variant pakai Hash Map"
  2. Estimate complexity — "Ini O(n²), n=100rb berarti 10 milyar ops, terlalu lambat"
  3. Trade off — "Pake Hash Map nambah memory tapi cut O(n²) jadi O(n)"

Bukan hafal kode, tapi paham kapan pakai apa.

⚠️ Jebakan saat solve problem:

🎯 Cara grow as algorithm thinker:

  1. Solve problem dengan brute force dulu — cek paham masalahnya
  2. Identify bottleneck — di mana O(n²) keluar?
  3. Apply pattern — Hash Map? Two Pointer? DP?
  4. Test edge case — kosong, 1, banyak duplicate, sorted, reverse
  5. Latihan rutin — LeetCode/HackerRank 1 problem per hari > 10 problem 1 hari per minggu

🧪 Self-check: Pelajari ini dengan benar kalau bisa jelaskan trade-off Hash Map vs Set vs Array di interview tanpa baca catatan, dan pilih sort algorithm berdasar n + sifat data.

TL;DR: Algoritma & DS = pattern recognition + trade-off thinking. Bukan hafal kode. Latihan rutin > marathon. Mulai brute force, identify bottleneck, apply pattern. Foundation untuk semua kerjaan engineering.