Getting Started with SRM (Single Round Match) Topcoder - Proclub/Knowledge-Repo GitHub Wiki
[Topcoder] (http://community.topcoder.com/tc) adalah salah satu website yang rutin mengadakan kompetisi dibidang IT, yaitu : Design, Development, UI development, QA and Maintenance, Cloud Spokes, dan Algorithm. FYI beberapa kompetisi tersebut ada yang berupa proyek, juara 1 dan juara 2 biasanya berhak dapet hadiah. Yang akan dibahas di post ini tentang kompetisi SRM (Single Round Match) salah satu cabang kompetisi dari Algorithm. Untuk memulai kompetisi ini, pertama kita buka [link ini] (http://community.topcoder.com/tc), nantinya tampilan dipojok kiri atas akan seperti ini:
Kemudian klik lambang O(n) nantinya akan ada tampilan untuk mendownload ContestAppletProd.jnlp yang digunakan untuk memasuki Arena, simpan file tersebut di file yang kita tentukan. Sebelum membuka ContestAppletProd.jnlp pastikan kita sudah mendownload JRE dan SDK yang terbaru. Setelah kita membuka ContestAppletProd.jnlp tampilannya akan muncul seperti ini:
Sebelum memasuki arena pastikan kalo kita sudah melakukan registrasi terlebih dahulu di topcoder, [klik disini untuk register di topcoder] (https://www.topcoder.com/reg/). Setelah kita sudah memiliki username, masukan username dan password di form yang tersedia, kemudian klik enter. Jika berhasil masuk maka tampilan di arena akan seperti ini:
Untuk melakukan practice kita bisa masuk ke Practice Rooms -> SRM -> [Pilih SRM berapa dan divisinya]. Setelah memasuki practice room kita bisa melakukan practice untuk SRM sebelumnya. Untuk membuka soal pilih Select One -> Pilih soal mana yang akan dipilih. Point soal yang ditunjukan memnunjukan tingkat kesulitan dari tiap-tiap soal, 250 (easy), 500 (medium), dan 1000 (hard),
Setelah memilih soal, terdapat 4 bagian pada problem statement.
- Problem statement: deskripsi soal yang diberikan, disini juga diberikan input dan output yang diharapkan seperti apa.
- Definition: bagian pada soal yang menjelaskan tentang nama class yang harus dibuat, nama method/fungsi yang harus dibuat dan didefinisikan berikut parameter dan tipe keluarannyanya. Yang perlu diperhatikan adalah urutan parameter harus sama (untuk nama variabel parameter kita bisa menentukan sesuka hati).
- Constraint: menjelaskan tentang batasan nilai antara input dan output dari fungsi yang harus kita buat.
- Examples: menjelaskan tentang contoh input dan output yang diberikan.
Kemudian kita dapat menulis solusi kita dibagian Coding Arena, untuk C++ format yang harus ditulis agar sesuai dengan definition dari problem statement adalah seperti berikut:
[ini bagian library]
class [nama class]
{
public:
[tipe data method] [nama method]([tipe data parameter 1] x, [tipe data parameter 2*jika ada] y)
{
return ans;
}
};
Contoh untuk soal, maka berikut dibawah ini adalah contoh jawaban yang diharapkan :
#include <iostream>
using namespace std;
class MagicalStringDiv2
{
public:
int minimalMoves(string S)
{
int ans = 0;
for(int i = 0; i < S.length()/2; i++)
if(S[i] == '<') ans++;
for(int i = S.length()/2; i < S.length(); i++)
if(S[i] == '>') ans++;
return ans;
}
};
Jika kita sudah yakin dengan solusi yang kita buat, maka untuk submit langkah pertama adalah pilih tombol save yang ada di bagian Coding Arena, kemudian pilih compile dan yang terakhir adalah pilih submit.
Nantinya akan muncul point yang kita dapatkan dari submitan, point ini tergantung dari seberapa cepat kita mensubmit solusi (semakin cepat kita mengirimkan solusi, maka point yang didapat semakin besar). Untuk mengecek apakan solusi kita benar kita dapat mengeceknya dibagian Practice Option->Run System Test, jawaban kita benar jika warna point soal yang kita muncul berwarna hijau.