- Batas waktu eksekusi program : 3 detik / kasus uji
- Batas memori program : 256 MB / kasus uji
Peter adalah mahasiswa Fasilkom UI pencipta sebuah Markup Language baru yang disebut nama Peter Markup Language (PTML). PTML memiliki aturan tagging yang sangat rapi dan terstruktur, sebagai berikut:
-
Setiap opening tag harus memiliki matching closing tag.
-
Format tagging:
-
Tag adalah suatu string yang diawali dengan karakter '<' lalu diikuti dengan nama tag dan diakhiri dengan karakter '>' pada baris yang sama.
-
Opening tag adalah suatu string yang diawali dengan string '<' lalu diikuti dengan nama tag dan diakhiri dengan karakter '>'
-
Closing tag adalah suatu string yang diawali dengan string '</' lalu diikuti dengan nama tag dan diakhiri dengan karakter '>'
-
-
Tag dapat memiliki konten string di dalamnya ataupun tidak, dan dapat memiliki beberapa nested tags di dalamnya ataupun tidak.
-
Untuk suatu opening tag, maka closing tag-nya harus muncul setelah semua konten (jika ada) dan semua nested tagging di dalamnya (jika ada) sudah ditutup.
Contoh Dokumen PTML yang Valid: |
---|
<p>Saya Suka <u>Perancangan <b>Pemrograman</b> Web</u></p> |
<p>Saya juga suka Struktur Data dan Algoritma</p> |
Contoh Dokumen PTML yang Tidak Valid: |
---|
<a><b><c></a></c></b> |
<div>Halo<br></div> |
Tugas Anda, bantulah Peter untuk menentukan apakah suatu konten dokumen PTML adalah sintaks yang valid atau tidak. Jika valid, Peter ingin tahu berapa kedalaman terjauh dari tagging-tagging yang paling dalam (inner-most) pada dokumen tersebut.
Kedalaman suatu tagging x didefinisikan sebagai berapa banyak opening tag yang belum ditutup yang muncul sebelum opening tag x hingga ke kedalaman 0. Kedalaman 0 adalah tagging yang paling luar (outer-most).
Contoh:
<a>
<b>
<c>
</c>
<d>
<e></e>
</d>
</b>
</a>
Pada contoh di atas, kedalaman yang paling besar adalah 3 yang dimiliki oleh tag e. kedalaman untuk tag a, b, c, d, e adalah masing masing 0, 1, 2, 2, 3.
Dalam mengerjakan soal ini, Anda dipersilakan untuk menggunakan Collection yang sudah disediakan di Java, tidak perlu mengimplementasikan Class Collection sendiri. Pikirkanlah Collection apa yang paling cocok untuk problem PTML ini. (https://docs.oracle.com/javase/6/docs/api/java/util/).
Baris pertama berisi satu string yang merupakan isi dokumen PTML.
(Catatan: Anda tidak perlu melakukan validasi input terhadap kriteria dokumen di atas.)
- String pada masukan hanya terdiri dari karakter ‘<’, ‘>’, ‘/’, dan alfabet huruf kecil.
- Panjang dari nama tag minimum 1 karakter dan tidak lebih dari 16 karakter.
- Jumlah karakter pada masukan tidak lebih dari 200.000.
Apabila PTML masukan valid, keluarkan satu baris yang berisi "YA x" di mana x adalah kedalaman maksimum suatu tag pada dokumen tersebut. Jika tidak valid maka keluarkan "TIDAK".
<a><b><c><d></d><d></d></c></b></a>
YA 3
<ptml><body><p>hello</body></p></ptml>
TIDAK
<a><a></a></a>
YA 1