---
tags: ddp-to-sda
---
# DDP to SDA
## Intro
Dokumen ini dibuat sebagai resource pembantu dan tambahan dari [DDP to SDA](https://www.hackerrank.com/ddp-to-sda) dalam rangka membantu persiapan menuju mata kuliah Struktur Data dan Algoritma, terutama setelah memelajari mata kuliah Dasar-Dasar Pemrograman.
## Disclaimer
Dokumen ini dibuat berdasarkan pengalaman pribadi[^1] penulis tanpa bantuan penelitian ilmiah/resmi yang kemudian dikembangkan secara umum, sehingga apa yang ditulis pada dokumen ini bisa jadi tidak benar atau tidak berlaku pada seluruh individu.
Dokumen ini dan [DDP to SDA](https://www.hackerrank.com/ddp-to-sda) dibuat dengan tujuan utama membantu mengembangkan kemampuan implementasi code dan programming logic, terutama menuju mata kuliah Struktur Data dan Algoritma.
Problemset pada [DDP to SDA](https://www.hackerrank.com/ddp-to-sda) dibuat secara pribadi. Beberapa problem bisa jadi memiliki kesamaan atau kemiripan ide, solusi, atau lainnya. Kesamaan atau kemiripan yang ada muncul tanpa adanya niat plagiarisme terhadap problem yang bersangkutan.
[^1]: Jika anda membaca dokumen ini, kemungkinan besar anda mengenal penulis
## Motivasi
Beberapa peserta mata kuliah Dasar-Dasar Pemrograman memahami konsep-konsep dasar dalam pemrograman, tetapi kesulitan dalam pengaplikasian konsep-konsep tersebut untuk menyelesaikan problem/task yang diberikan. Permasalahan umum yang sering dihadapi ketika coding adalah:
* Tidak tahu apa yang harus dilakukan ketika diberikan sebuah problem. Hal ini biasa terjadi karena logic[^2] yang belum berkembang dan belum terbiasa menyelesaikan problem/task seperti itu.
* Memiliki gambaran umum tentang apa yang harus dilakukan, tetapi kesulitan mengimplementasikannya, atau code yang dibuat tidak sesuai dengan apa yang ada di pikiran. Hal ini biasa terjadi karena kurang familiar dan mengerti terhadap alur suatu program.
* Berhasil mengimplementasikan solusi, tetapi tidak menghasilkan output yang tepat. Hal ini yang biasanya disebut sebagai Logic Error.
Secara umum, diperlukan latihan menyelesaikan problem agar lebih terbiasa dalam mengerjakan soal. Diharapkan [DDP to SDA](https://www.hackerrank.com/ddp-to-sda) dapat membantu mengatasi masalah-masalah tersebut (walaupun tidak maksimal).
[^2]: Logic yang dimaksud adalah programming logic, yaitu prinsip bagaimana mengolah instruksi dan data agar komputer dapat berjalan sesuai dengan keinginan.
## Tips
### Problem Solving Step by Step
1. Membaca dan benar-benar memahami soal.
2. Menentukan informasi dan data yang ada.
3. Menganalisis, menghubungkan, dan mengolah informasi dan data tersebut agar mendapatkan output yang diinginkan.
4. Menentukan approach yang tepat untuk mengolah informasi dan data tersebut menjadi output.
5. Implementasi code yang sesuai.
6. Debug debug debug
Poin 3 dan 4 seringkali dapat ditukar, yaitu memilih terlebih dahulu sebuah approach sebagai pedoman dalam mengolah informasi dan data yang ada.
### Compile Error
Compile Error adalah error yang paling ramah dibandingkan error yang lain. Biasakan untuk membaca error message yang muncul dan memahaminya agar debugging menjadi lebih lancar.
### Runtime Error
Antara:
1. Null pointer
2. Index out of bounds
3. Infinite loop / infinite recursive
4. Division by zero
5. Too much memory
### Logic Error
Terdapat tak hingga sebab yang menyebabkan logic error. Backtrack code untuk menentukan lokasi yang bermasalah (baca: print satu-satu), kemudian analisis lagi kira-kira apa yang menyebabkan masalah tersebut. Ulang terus-menerus sampai menemukan akar dari masalahnya. Butuh latihan (baca: error berkali-kali) agar terbiasa dalam menentukan akar permasalahan dan menyelesaikan logic error secara efisien.
### Stuck?
1. Coba coding dulu biasanya dapat inspirasi.
2. Coba corat-coret, jangan hanya mengandalkan pikiran untuk menyelesaikan problem.
3. Baca ulang soal, barangkali ada yang terlewat.
4. Meminta **hint** kepada orang lain, bukan solusi penuh.
5. Meminta bantuan orang lain untuk implementasi code secara **abstrak**. Yang dimaksud dengan abstrak adalah meminta bantuan implementasi umum (misal: "bagaimana mengetahui angka genap"), **bukan** implementasi spesifik (misal: "bagaimana mencari angka genap pada array").
## DDP to SDA
### Overview
Pada [DDP to SDA](https://www.hackerrank.com/ddp-to-sda) terdapat berbagai problem yang diharapkan mampu membantu mengembangkan kemampuan implementasi code dan programming logic. Setiap problem dilengkapi dengan editorial yang berisi solusi umum dan/atau hint untuk problem tersebut.
### Editorial
Editorial adalah tulisan yang dibuat untuk membantu menyelesaikan sebuah problem. Pada [DDP to SDA](https://www.hackerrank.com/ddp-to-sda), editorial **tidak akan** memberikan solusi berupa code demi menuntut perkembangan kemampuan problem solving. Isi editorial **maksimal** yang diberikan adalah pseudocode.
#### Struktur Editorial
Isi editorial akan berupa:
1. Deskripsi Singkat
2. Hint dan Solusi
3. Tambahan
Bagian Tambahan dapat berisi berbagai informasi lain terkait suatu problem.
#### Solving with Editorial
Editorial sangat membantu menyelesaikan soal sambil mengembangkan kemampuan problem solving:
1. Buka editorial hanya jika **benar-benar stuck**.
2. **Jangan** langsung membaca seluruh editorial, melainkan baca perlahan dari **awal**.
3. Jika menemukan informasi baru dari editorial, **berhentilah** membaca dan gunakan informasi baru tersebut untuk menyelesaikan problem.
4. Ulangi ke poin 1.
Membaca editorial **bukanlah menyontek/curang/plagiarisme**. Editorial dibuat untuk membantu menyelesaikan problem dengan memberikan hint dan/atau solusi umum.
**Jangan ragu** dan **merasa bersalah/bodoh/tidak mampu** ketika stuck kemudian membaca editorial. Menyelesaikan problem dengan bantuan editorial adalah hal **wajar** dan **bagus** untuk melatih problem solving.
Luangkan waktu untuk membaca editorial setelah menyelesaikan problem walaupun berhasil menyelesaikan tanpa bantuan editorial. Bisa jadi terdapat informasi baru dalam editorial yang sebelumnya tidak terpikirkan (misal: approach lain, analisis, lemma, pembuktian, dll.).
### Problemset
Semua problem di bawah merupakan bagian dari [DDP to SDA](https://www.hackerrank.com/ddp-to-sda) yang diurutkan berdasarkan topik. Disarankan untuk mengerjakan soal-soal yang berada dalam 1 topik secara berurutan. Berusahalah mengerjakan semaksimal mungkin sebelum beralih ke editorial. Happy solving!
#### Warming-Up
Problem pada topik ini bertujuan sebagai 'refresher' Dasar-Dasar Pemrograman, pengenalan pada platform HackerRank, dan memberikan gambaran dasar bagaimana problem-problem pada topik selanjutnya disajikan.
* [WU01 - Repeat After Me](/dOugX16pRk2vxtYlL1A7cA)
* [WU02 - Keep Repeat After Me](/qp5ip1mIToimq9GCacA4nQ)
* [WU03 - Repeat After Me Multiple Times](/d7ZRCXC4Q92GCiJVevdHSg)
* [WU04 - Keep Repeat After Me Multiple Times](/0moliFh1RfC4ZbDC1GIc1w)
* [WU05 - Remember These](/T6eb_y1WT9ePiWZUFwqsrw)
* [WU06 - Remember These 2](/nu836By3R-m937a8LNcWyQ)
* [WU07 - Remember These 3](/pssulyhtRLONi_OaqSKiuQ)
#### Array
Problem pada topik ini berfokus pada penggunaan array. Beberapa hal tentang array dapat dibaca di [dokumen ini](/7K4cRYiXSPe4XhpZTqUWuw).
* [AR01 - Real Estate Marketing - Tralia](/SemnAJ09TkqVOG5uBe0E4g)
* [AR02 - Real Estate Marketing - Fornax](/FrL0JXCwQvSq6-WZYCBniw)
* [AR03 - Warehouse Layouting](/LUlrpTgkTPm0ZwoQZX0dxQ)
* [AR04 - Business Visit](/pMlXnC1eTsCsF1ACfFRKMQ)
* [AR05 - Password Cycle](/4cyEJZqNTOOB9n-xuQRzeg)