From db9162b016abc5510a1172b88de907e99cbf89ce Mon Sep 17 00:00:00 2001 From: Risky Armansyah Date: Sun, 28 May 2023 20:31:59 +0700 Subject: [PATCH 1/3] add mei edition 2023 --- .../code/league/mei/MelipatDeathNote.java | 30 +++++++ .../code/league/mei/PenjadwalanMusik.java | 50 ++++++++++++ .../league/mei/SkorMatriksPakDengklek.java | 78 +++++++++++++++++++ .../code/league/mei/bowoSiTukangSusu.java | 44 +++++++++++ .../code/league/mei/urutkanKurawalKu.java | 43 ++++++++++ 5 files changed, 245 insertions(+) create mode 100644 src/main/java/code/league/mei/MelipatDeathNote.java create mode 100644 src/main/java/code/league/mei/PenjadwalanMusik.java create mode 100644 src/main/java/code/league/mei/SkorMatriksPakDengklek.java create mode 100644 src/main/java/code/league/mei/bowoSiTukangSusu.java create mode 100644 src/main/java/code/league/mei/urutkanKurawalKu.java diff --git a/src/main/java/code/league/mei/MelipatDeathNote.java b/src/main/java/code/league/mei/MelipatDeathNote.java new file mode 100644 index 0000000..2c4d7f2 --- /dev/null +++ b/src/main/java/code/league/mei/MelipatDeathNote.java @@ -0,0 +1,30 @@ +import java.util.Scanner; + +public class MelipatDeathNote { + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + + // Memasukkan input dari user + int p = in.nextInt(); + int q = in.nextInt(); + int m = in.nextInt(); + + // Melakukan pengecekan pada panjang dan lebar sebanyak M kali + // Setelah dilakukan pengecekan, yang terpanjang akan dibagi 2 + while (m > 0) { + if (p > q) { + p /= 2; + m--; + } else { + q /= 2; + m--; + } + } + + // Menampilkan hasil perhitungan + System.out.println(p + " " + q); + + // Menutup Scanner (Opsional) + in.close(); + } +} diff --git a/src/main/java/code/league/mei/PenjadwalanMusik.java b/src/main/java/code/league/mei/PenjadwalanMusik.java new file mode 100644 index 0000000..c61331b --- /dev/null +++ b/src/main/java/code/league/mei/PenjadwalanMusik.java @@ -0,0 +1,50 @@ +public class PenjadwalanMusik { + public static int findMaximumBeauty(int[] songDurations, int[] songBeauties, int totalTime) { + // Mendapatkan jumlah penyanyi + int n = songDurations.length; + // Matriks dp untuk menyimpan hasil perhitungan + int[][] dp = new int[n + 1][totalTime + 1]; + + // Melakukan perhitungan untuk setiap penyanyi dan waktu yang tersedia + for (int i = 1; i <= n; i++) { + int duration = songDurations[i - 1]; + int beauty = songBeauties[i - 1]; + + for (int j = 0; j <= totalTime; j++) { + if (duration <= j) { + // Memilih antara mengambil lagu atau tidak mengambil lagu + dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - duration] + beauty); + } else { + // Jika durasi lagu melebihi waktu yang tersedia, tidak mengambil lagu tersebut + dp[i][j] = dp[i - 1][j]; + } + } + } + + // Mengembalikan keindahan maksimum yang dapat dicapai + return dp[n][totalTime]; + } + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + // Membaca jumlah penyanyi + int n = scanner.nextInt(); + + // Membaca durasi dan keindahan lagu untuk setiap penyanyi + int[] songDurations = new int[n]; + int[] songBeauties = new int[n]; + for (int i = 0; i < n - 1; i++) { + songDurations[i] = scanner.nextInt(); + songBeauties[i] = scanner.nextInt(); + } + + // Membaca batasan waktu + int totalTime = scanner.nextInt(); + + // Memanggil fungsi untuk mencari keindahan maksimum + int maximumBeauty = findMaximumBeauty(songDurations, songBeauties, totalTime); + // Mencetak keindahan maksimum + System.out.println(maximumBeauty); + } +} \ No newline at end of file diff --git a/src/main/java/code/league/mei/SkorMatriksPakDengklek.java b/src/main/java/code/league/mei/SkorMatriksPakDengklek.java new file mode 100644 index 0000000..840b216 --- /dev/null +++ b/src/main/java/code/league/mei/SkorMatriksPakDengklek.java @@ -0,0 +1,78 @@ +import java.io.*; +import java.math.*; +import java.security.*; +import java.text.*; +import java.util.*; +import java.util.concurrent.*; +import java.util.function.*; +import java.util.regex.*; +import java.util.stream.*; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toList; + +class Result { + + /* + * Complete the 'SkorMatriksPakDengklek' function below. + * + * The function is expected to return an INTEGER. + * The function accepts 2D_INTEGER_ARRAY genshin as parameter. + */ + + public static int SkorMatriksPakDengklek(List> genshin) { + // Fungsi penyelesaian + int score = 0; + + // melakukan sorting pada tiap nilai pada matriks genshin + for (int i = 0; i < genshin.size(); i++){ + Collections.sort(genshin.get(i)); + } + + // melakukan iterasi pada matriks yang telah tersorting + for (int i = 0; i < genshin.get(0).size(); i++) { + int maxi = 0; + for (int j = 0; j < genshin.size(); j++) { + maxi = Math.max(genshin.get(j).get(i), maxi); + } + // menambah nilai score dengan nilai maksimum + score += maxi; + } + + return score; + } +} + +public class Solution { + public static void main(String[] args) throws IOException { + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH"))); + + String[] firstMultipleInput = bufferedReader.readLine().replaceAll("\\s+$", "").split(" "); + + int m = Integer.parseInt(firstMultipleInput[0]); + + int n = Integer.parseInt(firstMultipleInput[1]); + + List> genshin = new ArrayList<>(); + + IntStream.range(0, m).forEach(i -> { + try { + genshin.add( + Stream.of(bufferedReader.readLine().replaceAll("\\s+$", "").split(" ")) + .map(Integer::parseInt) + .collect(toList()) + ); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + }); + + int result = Result.SkorMatriksPakDengklek(genshin); + + bufferedWriter.write(String.valueOf(result)); + bufferedWriter.newLine(); + + bufferedReader.close(); + bufferedWriter.close(); + } +} \ No newline at end of file diff --git a/src/main/java/code/league/mei/bowoSiTukangSusu.java b/src/main/java/code/league/mei/bowoSiTukangSusu.java new file mode 100644 index 0000000..5954dfe --- /dev/null +++ b/src/main/java/code/league/mei/bowoSiTukangSusu.java @@ -0,0 +1,44 @@ +import java.util.Scanner; + +public class bowoSiTukangSusu { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int[] literBotol = {1, 5, 7, 10}; + int literSusu; + int hitungBotol = 0; + + int n = sc.nextInt(); + + if (n <= 0){ + System.out.println("Coba lagi!"); + System.exit(0); + } + for(int i = 0;i= literBotol[3]){ + literSusu -= literBotol[3]; + hitungBotol++; + } else if (literSusu >= literBotol[2]){ + literSusu -= literBotol[2]; + hitungBotol++; + } else if (literSusu >= literBotol[1]){ + literSusu -= literBotol[1]; + hitungBotol++; + } else if (literSusu >= literBotol[0]){ + literSusu -= literBotol[0]; + hitungBotol++; + } + } + System.out.println(hitungBotol); + hitungBotol = 0; + } + + } +} \ No newline at end of file diff --git a/src/main/java/code/league/mei/urutkanKurawalKu.java b/src/main/java/code/league/mei/urutkanKurawalKu.java new file mode 100644 index 0000000..59e4ad6 --- /dev/null +++ b/src/main/java/code/league/mei/urutkanKurawalKu.java @@ -0,0 +1,43 @@ +import java.util.Scanner; +import java.util.Stack; + +public class urutkanKurawalKu { + public static void main(String[] args) { + Scanner input = new Scanner(System.in); + int T = input.nextInt(); // Jumlah kasus uji + + for (int i = 0; i < T; i++) { + String s = input.next(); // Urutan karakter-karakter + + if (isBalanced(s)) { + System.out.println("YES"); + } else { + System.out.println("NO"); + } + } + } + + static boolean isBalanced(String s) { + Stack stack = new Stack<>(); + + for (int i = 0; i < s.length(); i++) { + char c = s.charAt(i); + + if (c == '(' || c == '[' || c == '{') { + stack.push(c); + } else { + if (stack.isEmpty()) { + return false; + } + + char top = stack.pop(); + + if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) { + return false; + } + } + } + + return stack.isEmpty(); + } +} From 4ba6569bc743dc707697409c25ef6486a942df45 Mon Sep 17 00:00:00 2001 From: Risky Armansyah Date: Sun, 28 May 2023 21:01:19 +0700 Subject: [PATCH 2/3] Create README.md --- src/main/java/code/league/mei/README.md | 72 +++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/main/java/code/league/mei/README.md diff --git a/src/main/java/code/league/mei/README.md b/src/main/java/code/league/mei/README.md new file mode 100644 index 0000000..b4c8caf --- /dev/null +++ b/src/main/java/code/league/mei/README.md @@ -0,0 +1,72 @@ +## June Edition + +Link soal : https://www.hackerrank.com/code-league-2 + +### 1. Illegal Moves by the Rook + +Soal ini memiliki pola tertentu untuk menjawabnya. Perhatikan papan catur $4 \times 4$ berikut ini : + +| 1 | 2 | 3 | 4 | +|:--:|:--:|:--:|:--:| +| 5 | 6 | 7 | 8 | +| 9 | 10 | 11 | 12 | +| 13 | 14 | 15 | 16 | + +Misalkan pion berada pada nomor 6, maka gerakan ilegal yang bisa dilakukan adalah gerakan diagonal ke 1, 3, 9, atau 11. Perhatikan pola berikut : + +* $6 - 1 = 5$ +* $6 - 3 = 3$ +* $6 - 9 = -3$ +* $6 - 11 = -5$ + +Kita dapat membentuk pola dari $(5, 3, -5, -3)$ dengan : + +* $| 4 - 1 | = | 3 | = | -3 |$ + +* $| 4 + 1 | = | 5 | = | -5 |$ + +* $4$ adalah ukuran dari papan catur $(4 \times 4)$. + +Lihat jawaban disini : [Illegal Moves by the Rook](TheRookMove.java) + +### 2. Gobta dan Gobzo + +Cara menjawab permasalahan ini adalah dengan Menggunakan looping untuk merubah nilai n, dimana jika nilai n terakhir adalah 0, 1, 2 maka n bernilai benar +- Jika n dimodulus 5 = 2 atau 3, maka n bernilai salah, +- Jika n dimodulus 5 = 4, maka ubah nilai n menjadi (n+1) / 5 +- Selain itu, ubah nilai n menjadi n / 5 + +Lihat jawaban disini : [Gobta dan Gobzo](GobtaDanGobzo.java) + +### 3. Tentukan Team Lomba +Untuk menyelesaikan soal ini diperlukan sebuah logika untuk membuat sebuah perhitungan faktorial, kemudian untuk mendapatkan peluang dari setiap kelas untuk dijadikan calon anggota team maka kita bisa menggunakan kombinasi, kemudian seluruh hasil kombinasi dikalikan antar kelas a, b, dan c. + +Lihat jawaban disini : [Tentukan Team Lomba](TentukanTeamLomba.java) + +### 4. Angka Palindrome Kirisu + +Untuk menjawab soal ini, kita dapat menggunakan rekursif. Apabila diilustrasikan dengan binary tree, maka kita dapat membuat rekursif dengan node kiri menggunakan $x$ dan node kanan menggunakan $y$. + +Lalu untuk base casenya, dapat berupa: + +* return 1, jika jumlah setiap digit pada susunan angkanya **sama dengan num** dan susunan angkanya **palindrome**. +* return 0, jika jumlah setiap digit pada susunan angkanya **sama dengan num**, tetapi **tidak palindrome**. +* return 0, jika jumlah setiap digit pada susunan angkanya **melebihi num**. + +``` + | num = 8 | root + | x = 2 | / \ + | y = 3 | 2 3 + / \ / \ + 22 23 32 33 + / \ / \ / \ / \ + / \ / \ / \ / \ + 222 223 232 233 322 323 332 333 + / \ / \ / \ | / \ | | | + / \ / \ / \ 0 / \ 1 0 0 + 2222 2223 2232 2233 2322 2323 3222 3223 + | | | | | | | | + 1 0 0 0 0 0 0 0 +``` + +Lihat jawaban disini : [Angka Palindrome Kirisu](AngkaPalindromeKirisu.java) \ No newline at end of file From 3174e8e5bfcce035d3d2ae432df8fac2ad09f171 Mon Sep 17 00:00:00 2001 From: Risky Armansyah Date: Tue, 30 May 2023 09:34:05 +0700 Subject: [PATCH 3/3] Update README.md --- src/main/java/code/league/mei/README.md | 169 +++++++++++++++++------- 1 file changed, 119 insertions(+), 50 deletions(-) diff --git a/src/main/java/code/league/mei/README.md b/src/main/java/code/league/mei/README.md index b4c8caf..f9ec882 100644 --- a/src/main/java/code/league/mei/README.md +++ b/src/main/java/code/league/mei/README.md @@ -1,72 +1,141 @@ -## June Edition +## Mei Edition -Link soal : https://www.hackerrank.com/code-league-2 +Link soal : https://www.hackerrank.com/code-league-5 -### 1. Illegal Moves by the Rook +### 1. Skor Matriks Pak Dengklek -Soal ini memiliki pola tertentu untuk menjawabnya. Perhatikan papan catur $4 \times 4$ berikut ini : +Salah satu penyelesaian dari soal ini adalah dengan melakukan sorting terlebih dahulu pada tiap matriks m di dalam matriks genshin. Setelah itu, matriks genshin dapat diiterasikan untuk mendapatkan nilai maks dari matriks m ( index ke-0 setelah disorting). Setelah itu, nilai yang didapat akan disimpan pada sebuah list sementara dan nilai tersebut dihapus dari matriks m. Setelah m kali iterasi, skor akan ditambah dengan nilai maksimum dari list sementara tersebut. Berikut contoh dari penyelesaian salah satu soal pada test case : -| 1 | 2 | 3 | 4 | -|:--:|:--:|:--:|:--:| -| 5 | 6 | 7 | 8 | -| 9 | 10 | 11 | 12 | -| 13 | 14 | 15 | 16 | +| 7 | 2 | 1 | +|:--:|:--:|:--:| +| 6 | 4 | 2 | +| 6 | 5 | 3 | +| 3 | 2 | 1 | -Misalkan pion berada pada nomor 6, maka gerakan ilegal yang bisa dilakukan adalah gerakan diagonal ke 1, 3, 9, atau 11. Perhatikan pola berikut : +perulangan 1 : nilai maksimum tiap m matriks pada genshin [7, 6, 6, 3] , nilai dihapus, dan score ditambah dengan nilai maksimum dari matriks tersebut. ($score += 7$) -* $6 - 1 = 5$ -* $6 - 3 = 3$ -* $6 - 9 = -3$ -* $6 - 11 = -5$ +| 2 | 1 | +|:--:|:--:| +| 4 | 2 | +| 5 | 3 | +| 2 | 1 | -Kita dapat membentuk pola dari $(5, 3, -5, -3)$ dengan : +perulangan 2 : nilai maksimum tiap m matriks pada genshin [2, 4, 5, 2], nilai dihapus, dan score ditambah dengan nilai maksimum dari matriks tersebut. ($score += 5$) -* $| 4 - 1 | = | 3 | = | -3 |$ +| 1 | +|:--:| +| 2 | +| 3 | +| 1 | -* $| 4 + 1 | = | 5 | = | -5 |$ +perulangan 3 : nilai maksimum tiap m matriks pada genshin [1, 2, 3, 1], nilai dihapus, dan score ditambah dengan nilai maksimum dari matriks tersebut. ($score += 3$) -* $4$ adalah ukuran dari papan catur $(4 \times 4)$. +$score = 7 + 5 + 3 = 15$ -Lihat jawaban disini : [Illegal Moves by the Rook](TheRookMove.java) +Lihat jawaban disini : [Skor Matriks Pak Dengklek](SkorMatriksPakDengklek.java) -### 2. Gobta dan Gobzo +### 2. Bowo Si Tukang Susu -Cara menjawab permasalahan ini adalah dengan Menggunakan looping untuk merubah nilai n, dimana jika nilai n terakhir adalah 0, 1, 2 maka n bernilai benar -- Jika n dimodulus 5 = 2 atau 3, maka n bernilai salah, -- Jika n dimodulus 5 = 4, maka ubah nilai n menjadi (n+1) / 5 -- Selain itu, ubah nilai n menjadi n / 5 +Bowo adalah seorang tukang susu. Ia menyediakan paket botol susu dalam ukuran yang bervariasi. Jenis-jenis ukurang yang mungkin untuk botol susu adalah {1, 5, 7, dan 10} liter. Bowo ingin mensuplai setiap liter air susu kedalam botol sesedikit mungkin. Tolong bantu bowo untuk menemukan jumlah minimum botol yang diperlukan untuk memasok permintaan susu yang diberikan. -Lihat jawaban disini : [Gobta dan Gobzo](GobtaDanGobzo.java) +15 Liter = (10 + 1) + (5 + 1) => 2 +15 Liter = (10 Liter + 1 Botol) + (5 Liter + 1 Botol) => 15 Liter | 2 Botol -### 3. Tentukan Team Lomba -Untuk menyelesaikan soal ini diperlukan sebuah logika untuk membuat sebuah perhitungan faktorial, kemudian untuk mendapatkan peluang dari setiap kelas untuk dijadikan calon anggota team maka kita bisa menggunakan kombinasi, kemudian seluruh hasil kombinasi dikalikan antar kelas a, b, dan c. +9 Liter = (7 + 1) + (1 + 2) => 3 +9 Liter = (7 Liter + 1 Botol) + (1 Liter + 2 Botol) => 9 Liter | 3 Botol -Lihat jawaban disini : [Tentukan Team Lomba](TentukanTeamLomba.java) +Lihat jawaban disini : [Bowo Si Tukang Susu](bowoSiTukangSusu.java) -### 4. Angka Palindrome Kirisu +### 3. Urutkan Kurawal-ku +Seperti yang kita tahu, tanda kurung memiliki banyak jenis. Dan dalam penggunaan secara bersama kurung harus diletakkan sesuai dengan posisinya. +Contoh : "{()}" +Didalam contoh kita dapat menemukan 2 jenis kurung, diantaranya kurung "{}" dan "()". +Keduanya harus diletakkan dengan posisi yang benar untuk mendapatkan keluaran hasil terutama dalam operasi penghitungan. -Untuk menjawab soal ini, kita dapat menggunakan rekursif. Apabila diilustrasikan dengan binary tree, maka kita dapat membuat rekursif dengan node kiri menggunakan $x$ dan node kanan menggunakan $y$. +Pada soal ini, Peserta diharuskan untuk memrancang sebuah program berbasis code yang dapat mengecek kebenaran dalam posisi tumpukan tanda kurung. +Dan seperti diatas, tumpukan kurung dianggap seimbang jika setiap karakter pembuka memiliki karakter penutup dengan urutan yang benar. -Lalu untuk base casenya, dapat berupa: +Untuk metode penyelesaian bisa digunakan dengan memanggil library internal java yakni "tumpukan". +tumpukan digunakan untuk mengorganisir setiap karakter dari inputan yang di buat -* return 1, jika jumlah setiap digit pada susunan angkanya **sama dengan num** dan susunan angkanya **palindrome**. -* return 0, jika jumlah setiap digit pada susunan angkanya **sama dengan num**, tetapi **tidak palindrome**. -* return 0, jika jumlah setiap digit pada susunan angkanya **melebihi num**. +Penjelasan Algoritma: -``` - | num = 8 | root - | x = 2 | / \ - | y = 3 | 2 3 - / \ / \ - 22 23 32 33 - / \ / \ / \ / \ - / \ / \ / \ / \ - 222 223 232 233 322 323 332 333 - / \ / \ / \ | / \ | | | - / \ / \ / \ 0 / \ 1 0 0 - 2222 2223 2232 2233 2322 2323 3222 3223 - | | | | | | | | - 1 0 0 0 0 0 0 0 -``` +1. Akan dilakukan perulangan sebanyak jumlah karakter yang diinput + ex: {()} = 4 Perulangan. +2. Teks akan diubah menjadi variabel char dengan mengestrak setiap karakter dalam teks +3. Karakter akan selalu dimasukkan pada sebuah tumpukan +4. Didalam perulangan akan terdapat sebuah perilaku seleksi dimana seleksi akan memilah antara karakter pembuka seperti "{", "[]" , "(". Jika terdapat diantaranya maka akan dimasukkan kedalam sebuah tumpukan tumpukan + Jika karakter "c" bukanlah tanda kurung buka, maka dilakukan pengecekan lebih lanjut: + a. Jika tumpukan kosong, artinya tidak ada tanda kurung buka yang sesuai untuk karakter "c", maka method mengembalikan nilai false. + b. Jika tumpukan tidak kosong, karakter teratas dari tumpukan diambil menggunakan pemanggilan "tumpukan.pop()" dan disimpan dalam variabel "top". + c. Dilakukan pengecekan apakah karakter "c" sesuai dengan tanda kurung tutup yang diharapkan berdasarkan karakter teratas tumpukan: + Jika karakter "c" adalah ')' dan karakter teratas tumpukan bukan '(', maka method mengembalikan nilai false. + Jika karakter "c" adalah ']' dan karakter teratas tumpukan bukan '[', maka method mengembalikan nilai false. + Jika karakter "c" adalah '}' dan karakter teratas tumpukan bukan '{', maka method mengembalikan nilai false. +5. Setelah selesai memeriksa semua karakter dalam string "s", dilakukan pengecekan apakah tumpukan kosong. Jika tumpukan kosong, artinya semua tanda kurung telah seimbang, -Lihat jawaban disini : [Angka Palindrome Kirisu](AngkaPalindromeKirisu.java) \ No newline at end of file +Lihat jawaban disini : [Urutkan Kurawal-ku](urutkanKurawalKu.java) + +### 4. Penjadwalan Acara Musik + +1. Membaca Jumlah Penyanyi: + + Menggunakan Scanner, baca nilai integer dari input sebagai n, yang merupakan jumlah penyanyi. + Membaca Durasi dan Keindahan Lagu; + +2. Buat dua array songDurations dan songBeauties dengan panjang n yang telah diinputkan tadi. + Selanjutnya, menggunakan loop for dengan perulangan sebanyak jumalah penyanyi dikurang 1, baca nilai integer dari input dan simpan ke dalam array songDurations dan songBeauties masing-masing sesuai dengan indeksnya; + +3. Kemudian setelah itu membaca Batasan Waktu + +4. Setelah semua input sudah dibaca + Invoke Fungsi findMaximumBeauty,Fungsi ini menerima tiga parameter, yaitu songDurations (array berisi durasi dari setiap lagu), songBeauties (array berisi keindahan dari setiap lagu), dan totalTime (batasan waktu); + +5. Didalam fungsi findMaximumBeauty + -Kita membuat Variabel n yang diambil dari panjang Array songDurations, + setelah itu menginisiasi Matriks dp dengan panjang baris dari nilai n+1 dan kolom total time - 1; + + -Kemudia membuat iterasi yang dilakukan untuk setiap penyanyi dan waktu yang tersedia; + + -Jika durasi lagu saat ini lebih kecil atau sama dengan waktu yang tersedia, maka keindahan maksimum pada waktu tersebut adalah maksimum antara keindahan maksimum dari penyanyi sebelumnya pada waktu yang sama atau keindahan maksimum dari penyanyi sebelumnya pada waktu yang lebih sedikit ditambah keindahan lagu saat ini.; + + -Jika durasi lagu saat ini lebih besar dari waktu yang tersedia, maka keindahan maksimum pada waktu tersebut adalah keindahan maksimum dari penyanyi sebelumnya pada waktu yang sama.; + + -Kembalikan keindahan maksimum yang dapat dicapai pada waktu total yang tersedia; + +6. Setelah proses Invoke fungsi telah selesai,maka simpan nilai yang direturn fungsi tersebut kedalam variabel + Maximum Beauty,setelah itu tampilkan + + +Lihat jawaban disini : [Penjadwalan Acara Musik](PenjadwalanMusik.java) + +### 5. Melipat Death Note +Untuk menjawab soal ini, kita perlu mengecek mana yang lebih panjang antara kedua inputan (kita anggap saja P dan Q). Yang paling panjang akan kita bagi dengan 2. hal ini kita lakukan perulangan sebanyak M kali. Dan jika ada diantara kedua inputan yang bernilai ganjil, maka kita akan melakukan pembulatan ke bawah. + +Contoh: +P = 10 +Q = 8 +M = 3 + +* pada Pelipatan pertama( M = 1 ): + P > Q, maka P akan dibagi 2. + P = 10/2 + + P = 5, Q = 8 + +* pada pelipatan kedua ( M = 2 ) + Q > P, maka Q akan dibagi 2. + Q = 8/2 + + P = 5, Q = 4 + +* pada pelipatan ketiga( M = 3 ) + P > Q, maka P akan dibagi 2. + P = 5/2 + P = 2 (2,5 dibulatkan kebawah menjadi 2) + + P = 2, Q = 10 + +Setelah semua perulangan telah dilakukan maka tampilkan P dan Q secara berurutan (Jangan sampai terbalik). + +Lihat jawaban disini : [Melipat Death Note](MelipatDeathNote.java)