Perkenalan. Tim Olimpiade Komputer Indonesia 1/23

dokumen-dokumen yang mirip
Bab I Pendahuluan Latar belakang

P E M R O G R A M A N K O M P E T I T I F D A S A R

Seri : Algoritma dan Pemrograman dengan Pascal

Panduan Lomba Pagelaran Mahasiswa Nasional Bidang TIK Yogyakarta, Pemrograman Penyisihan

Berkas Soal Final Competitive Programming Tingkat Mahasiswa. CompFest 2013

PEMBINAAN MENGHADAPI OLIMPIADE MATEMATIKA TINGKAT SMA

Curriculum Vitae. Pekerjaan Sekarang Mahasiswa universitas Pendidikan Sekarang Sarjana (S1) di Fakultas Ilmu Komputer Universitas Indonesia

Computational Thinking & Bebras Indonesia. oleh Anwar Fu adi, M.T.I. Koordinator Bebras Biro Jakarta - Universitas Paramadina

Olimpiade Sains Nasional 2015 Bidang Informatika. Pembahasan

Bundel Soal Sesi 2 Bidang Informatika Olimpiade Sains Nasional X

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

A. Jangkauan Terbesar

OLIMPIADE MATEMATIKA SMA. ( Oleh : Ahmad Thohir )

PENJURIAN ONLINE BERBASIS WEB SERVICE

ANALISIS STRATEGI LANGKAH MUNDUR DAN BERNALAR LOGIS DALAM MENENTUKAN BILANGAN DAN NILAINYA. Landyasari Riffyanti 1), Rubono Setiawan 2)

OMITS 12. Soal Babak Penyisihan Olimpiade Matematika ITS (OMITS) Tahun 2012 Tingkat SMA/Sederajat MATEMATIKA ING NGARSA SUNG TULADHA

Kisi-Kisi dan Materi Uji Olimpiade Sains BIDANG INFORMATIKA/KOMPUTER

PANDUAN OLIMPIADE DAN KISI-KISI SOAL OLIMPIADE SAINS KOMPUTER

Bagi peserta OSN 2014 dan calon peserta Open OSN William Gozali, Teknis OSN

Olimpiade Sains Nasional XI Bidang Komputer/Informatika

Pembahasan Penyisihan Competitive Programming Tingkat SMA. CompFest Kontributor: Ashar Fuadi Gede Wahyu Adi Pramana William Gozali

Pengantar Algoritma & Flow Chart

BAGAIMANA MENGOPTIMALKAN OLIMPIADE MATEMATIKA UNTUK MENINGKATKAN MUTU PENDIDIKAN MATEMATIKA DI SEKOLAH DASAR?

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

OLIMPIADE SAINS NASIONAL (MATEMATIKA) SMP

PELATIHAN STRATEGI-STRATEGI DALAM MEMECAHKAN MASALAH MATEMATIKA UNTUK GURU SMP/MTS

HAPUS SALAH SATU BILANGAN DAN BERIKAN ALASAN, KENAPA BILANGAN ITU ANDA HAPUS.

Tujuan dan Sasaran. Problem Solving = Algorithms. Pemecahan Masalah. Proses Pemecahan Masalah 15/03/2010. Algoritma Pemrograman

Dari Bulgaria, Mahasiswa FK Boyong Pulang Medali Perak

SELEKSI OLIMPIADE TINGKAT PROVINSI 2013 TIM OLIMPIADE MATEMATIKA INDONESIA 2014

BAB 1 PENDAHULUAN Latar Belakang

MARI BERPIKIR MATEMATIS: Panduan Olimpiade Sains Nasional SMP

PEMBAHASAN. Teorema 1. Tidak ada bilangan asli N yang lebih besar dari semua bilangan bulat lainnya.

BAB I PENDAHULUAN. Mutu sumber daya manusia suatu bangsa bergantung pada mutu pendidikan.

PERANAN PERGURUAN TINGGI DALAM MENINGKATKAN KUALITAS OLIMPIADE SAINS NASIONAL TINGKAT SEKOLAH DASAR

Strategi Penemuan Pola pada Pemecahan Masalah

A. LATAR BELAKANG MASALAH

Hubungan Kompleksitas Algoritma dengan Cara Belajar

Logika Informatika. Heri Sismoro, M.Kom. STMIK AMIKOM Yogyakarta

Pembahasan Penyisihan Competitive Programming Tingkat Mahasiswa. CompFest 2013

TOKInews. 2 Perak 1 Perunggu, Dari IOI 2015, KAZAKHSTAN. Mei 2016

SELEKSI TINGKAT PROPINSI MATEMATIKA SMA/MA

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN

A. Bayar atau Kabur. Format Masukan. Format Keluaran. Contoh Masukan

Problem A Kamus Panda

Olimpiade Sains Nasional XI Bidang Komputer/Informatika

LEMBAR KERJA SISWA (LKS) I ( 1 ) ( 2 ) ( 3 ) ( 4 ) a. Apakah gambar di atas membentuk suatu pola?

BAB I PENDAHULUAN. Baru-baru ini, banyak sekolah pada tingkat menengah atas di Indonesia

BAB I PENDAHULUAN. pendidikan secara nasional adalah hasil nilai Ujian Nasional (UN). Permendikbud

DAFTAR ISI. LEMBAR PERNYATAAN. ABSTRAK KATA PENGANTAR. UCAPAN TERIMAKASIH. DAFTAR TABEL. DAFTAR GAMBAR DAFTAR LAMPIRAN

BAB II KAJIAN TEORITIS DAN HIPOTESIS. lambang yang formal, sebab matematika bersangkut paut dengan sifat-sifat struktural

Algoritma Pemrograman I

PENGENALAN BINARY INDEXED TREE DAN APLIKASINYA

Sieve of Eratosthenes dan Aplikasinya Dalam Problem Solving

Nama Mata Kuliah : Teori Bilangan Kode Mata Kuliah/SKS : MAT- / 2 SKS

BAB I PENDAHULUAN. 1.1 Latar Belakang Masalah. Matematika merupakan salah satu pengetahuan mendasar yang dapat

Kata Pengantar Faktor dan Kelipatan

Pengantar OSK Komputer. Muhammad Saiful Jumat, 20 Januari 2017 ComLabs C, SMA Negeri 2 Bandung

BAB IV HASIL PENELITIAN DAN PEMBAHASAN HASIL PENELITIAN DAN PEMBAHASAN. datar untuk siswa SMP kelas VIII Semester 2. Game edukasi ini dibuat

BAB II DASAR-DASAR ALGORITMA

Final Programming Competition (Mahasiswa)

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

BAB V PERULANGAN. for ( inisialisasi; syarat pengulangan; pengubah nilai pencacah )

Programming Fun Learning dengan DOMjudge

09/09/2013 ILKOM IPB 1. Algoritme dan Pemrograman. Contoh penerapan. Kiat Sukses. Program Komputer. Kenapa belajar algoritme dan pemrograman?

Praktikum Dasar Pemrograman

Satya Mardi Ayuningrum 1, Rubono Setiawan 2. Pendidikan Matematika, Universitas Sebelas Maret Surakarta

R. Rosnawati Jurusan Pendidikan Matematika FMIPA UNY

Kunci Jawaban & Hint Try Out OSK 2017 Oleh : Lie, Maximilianus Maria Kolbe

OLIMPIADE SAINS NASIONAL VII

03/02/2010. Mari kita renungkan bersama sama!!!

Bundel Soal Sesi 1 Bidang Informatika Olimpiade Sains Nasional X

Konstruksi Dasar Algoritma

PENINGKATAN PEMAHAMAN PELAJARAN MATEMATIKA TINGKAT SMA DENGAN PEMROGRAMAN PASCAL DI SMAN 1 KUTA SELATAN BADUNG ABSTRAK

BAB 1 PENDAHULUAN. identik dengan tes GRE dan GMAT yang sudah menjadi standar internasional.

ALGORITMA PEMOGRAMAN SEMESTER GENAP 2017/2018

I. PENDAHULUAN. Setiap siswa mempunyai cara yang berbeda dalam mengkonstruksikan

Penulis : Tyas Rangga Kristianto, M.Si. Copyright 2013 pelatihan-osn.com. Cetakan I : Oktober Diterbitkan oleh : Pelatihan-osn.

Pemfaktoran prima (2)

FAKTOR DAN KELIPATAN KELAS MARS SD TETUM BUNAYA

BAB 1 PENDAHULUAN 1.1 Latar Belakang Masalah

BAB 5. Kondisional Perulangan. Materi. Pengenalan Perulangan Perulangan For Perulangan While Perulangan dengan menggunakan Kondisional If

Strategi Algoritma Penyelesaian Puzzle Hanjie

Petunjuk Pengerjaan Soal Semifinal Olimpiade Matematika ITS (OMITS) tingkat SMP/Sederajat tahun 2012

BAB I PENDAHULUAN. dilaksanakan dalam kegiatan pembelajaran.

BAB I PENDAHULUAN. Matematika merupakan ilmu universal yang mendasari perkembangan

BAB I PENDAHULUAN A. Latar Belakang Hana Riana Permatasari, 2013

SILABUS DAN KISI-KISI SELEKSI OLIMPIADE SAINS NASIONAL BIDANG INFORMATIKA/KOMPUTER

Algoritma Pemrograman

TIM OLIMPIADE KOMPUTER INDONESIA (TOKI) Panitia Pusat TOKI

Rekursif/ Iterasi/ Pengulangan

matematika PEMINATAN Kelas X PERSAMAAN DAN PERTIDAKSAMAAN EKSPONEN K13 A. PERSAMAAN EKSPONEN BERBASIS KONSTANTA

TOKI 2015, BERSIAP KE KAZAKHSTAN

SILABUS MATEMATIKA KEMENTERIAN

Bahasa Pemrograman dan Flowchart. Adri Priadana

ALGORITMA GREEDY DALAM PERMAINAN DOTS AND BOXES

Transkripsi:

Perkenalan Tim Olimpiade Komputer Indonesia 1/23

Perkenalan Selamat datang di topik Pemrograman Kompetitif Dasar! Anda diharapkan telah menguasai pemrograman dasar dan mampu: Mengetahui setidaknya satu bahasa pemrograman. Mampu membaca dan menulis program. Mampu memahami pseudocode. 2/23

Pseudocode Merupakan bahasa informal serupa dengan bahasa pemrograman untuk mendeskripsikan program. Biasa digunakan pada materi pembelajaran algoritma. Pseudocode sendiri bukanlah bahasa pemrograman sungguhan. 3/23

Contoh Pseudocode insertionsort(a) 1 for i = 2 to A.length 2 j = i 3 while (j > 1) and (A[j] < A[j 1]) 4 swap(a[j], A[j 1]) 5 j = j 1 Memahami pseudocode pada awalnya mungkin sulit. Seiring berjalannya waktu, Anda akan terbiasa dan memahami betapa mudahnya menggunakan pseudocode. 4/23

Tentang Pemrograman Kompetitif Pemrograman Kompetitif Competitive programming is solving well-defined problems by writing computer programs under specified limits. -Ashar Fuadi- 5/23

Tentang Pemrograman Kompetitif (lanj.) Pemrograman kompetitif sering dijadikan ajang adu otak dan asah kemampuan problem solving. Peserta ditantang untuk: Menganalisa permasalahan Merancang algoritma solusi Menuliskannya dalam bentuk program 6/23

Ajang Pemrograman Kompetitif - Nasional Di Indonesia, pemrograman kompetitif menjadi konsep dalam Olimpiade Sains Nasional (OSN) bidang komputer/informatika. Selain OSN, terdapat kompetisi tingkat nasional yang diselenggarakan beberapa Universitas di Indonesia, seperti CompFest (UI), NPC (ITS), BNPCHS (Binus), dan ILPC (Ubaya). Sebagai sarana berlatih, ada juga TOKI Open Contest yang biasa dilaksanakan per bulan. 7/23

Ajang Pemrograman Kompetitif - Internasional International Olympiad in Informatics (IOI) merupakan kompetisi bagi siswa SMA dari seluruh dunia. Untuk mahasiswa, terdapat ACM-ICPC (ACM International Collegiate Programming Contest) yang pesertanya terdiri dari tim-tim beranggotakan tiga orang. 8/23

Ajang Pemrograman Kompetitif - Lainnya Terdapat pula kompetisi tingkat regional yang diselenggarakan bagi negara-negara dalam suatu bagian, seperti Asia-Pacific Informatics Olympiad (APIO). Untuk sekedar hobi dan latihan rutin, Anda dapat mengikuti Codeforces, Topcoder, dan Codechef. 9/23

Contoh Pemrograman Kompetitif Masalah yang diberikan adalah well-defined problems. Well-defined problem adalah sebuah masalah yang telah terdefinsi dengan baik, seperti asumsi yang diperlukan dan batasan masalah. Solusi atas masalah ditulis dalam bentuk program program dan memenuhi batas-batas yang ditentukan. Batas yang ditentukan: waktu, memori, dan lainnya. 10/23

Contoh Soal Pemrograman Kompetitif Terdapat N buah ruangan yang dinomori dari 1 sampai N Ruangan ke-i memiliki sebuah lampu dan sebuah tombol. Bila tombol itu ditekan, keadaan lampu pada seluruh ruangan ke-x akan berubah (dari mati menjadi menyala, atau sebaliknya), yang mana x habis dibagi i. Contoh, bila N = 10 dan tombol di ruangan ke-2 ditekan, maka keadaan lampu pada ruangan 2, 4, 6, 8, dan 10 akan berubah. Bila pada awalnya seluruh lampu berada pada keadaan mati, dan tombol pada setiap ruangan ditekan tepat sekali, bagaimanakah keadaan lampu pada ruangan ke-n? 11/23

Contoh Soal Pemrograman Kompetitif (lanj.) Batas waktu: 1 detik. Batas memori: 32 MB. Diketahui 1 N 10 14. 12/23

Solusi Naif Salah satu cara penyelesaiannya adalah dengan mensimulasikan skenario pada deskripsi soal: Mulai dengan ruangan ke-1, dipastikan keadaan lampu pada ruangan ke-n akan berubah (N habis dibagi 1). Lanjut ke ruangan ke-2, periksa apakah 2 habis membagi N. Bila ya, ubah keadaan lampunya. Lanjut ke ruangan ke-3, periksa apakah 3 habis membagi N. Bila ya, ubah keadaan lampunya.... dan seterusnya sampai ruangan ke-n. 13/23

Solusi Naif (lanj.) Setelah selesai disimulasikan, tinggal keadaan lampu ruangan ke-n dan cetak jawabannya. Kompleksitas solusi ini adalah O(N), dan hanya akan bekerja untuk nilai N yang kecil. Untuk N yang lebih besar, misalnya N = 10 9, kemungkinan besar diperlukan waktu lebih dari 1 detik. 14/23

Solusi yang Lebih Baik Dengan observasi, yang sebenarnya perlu dilakukan adalah memeriksa banyaknya pembagi dari N. Apabila banyaknya pembagi ganjil, berarti pada akhirnya lampu di ruangan ke-n akan menyala. Bila genap, berarti lampu di ruangan ke-n akan tetap mati. 15/23

Solusi yang Lebih Baik (lanj.) Untuk mencari banyaknya pembagi dari N dengan lebih efisien, lakukan faktorisasi prima terlebih dahulu. Misalkan N = 12, maka faktorisasi primanya adalah 2 2 3. Untuk menjadi pembagi dari 12, suatu bilangan hanya boleh: Memiliki faktor 2 maksimal sebanyak 2. Memiliki faktor 3 maksimal sebanyak 1. Tidak boleh memiliki faktor lainnya. 16/23

Solusi yang Lebih Baik (lanj.) Sebagai contoh, berikut daftar seluruh pembagi dari 12: 1 = 2 0 3 0 2 = 2 1 3 0 3 = 2 0 3 1 4 = 2 2 3 0 6 = 2 1 3 1 12 = 2 2 3 1 17/23

Solusi yang Lebih Baik (lanj.) Banyaknya pembagi dari 12 sebenarnya sama saja dengan banyaknya kombinasi yang bisa dipilih dari 2 0, 2 1, 2 2 dan 3 0, 3 1. Banyaknya kombinasi sama dengan mengkalikan banyaknya elemen pada tiap-tiap himpunan. Sehingga banyaknya cara ada 3 2 = 6 cara. 18/23

Solusi yang Lebih Baik (lanj.) Cara ini juga berlaku untuk nilai N yang lain. Misalnya N = 172.872 = 2 3 3 2 7 4. Berarti banyak pembaginya adalah 4 3 5 = 60. 19/23

Solusi yang Lebih Baik (lanj.) Secara umum, banyaknya pembagi dari: adalah: N = a p 1 1 ap 2 2 ap 3 3... ap k k (1 + p 1 ) (1 + p 2 ) (1 + p 3 )... (1 + p k ) Jadi cukup faktorkan N, lalu periksa banyak pembaginya. Faktorisasi bilangan bisa diimplementasikan dengan efisien dan 1 detik cukup untuk N sampai 10 14. 20/23

Manfaat Pemrograman Kompetitif Mengasah kemampuan menganalisa permasalahan dan pemecahan masalah. Bertemu dengan teman-teman sehobi! Kadang, soal interview untuk masuk ke perusahaan teknologi terkemuka juga membutuhkan kemampuan problem solving. 21/23

Dan Tentunya... Menantang dan menyenangkan! 22/23

Latihan Sebagai pemanasan, silakan mengerjakan soal latihan yang diberikan. Baca juga beberapa materi pengayaan yang diberikan. 23/23