Nama : Yoga Putra Pratama NIM : 18222073 Jawaban: 1. Pseudocode untuk mencari semua pasangan bilangan yang jika dijumlahkan menghasilkan suatu bilangan yang sama: function findPairsWithSameSum(arr): # Inisialisasi dictionary untuk menyimpan pasangan bilangan pair_dict = {} # Iterasi melalui seluruh pasangan bilangan dalam list for i from 0 to len(arr) - 1: for j from i+1 to len(arr) - 1: # Hitung hasil penjumlahan pasangan bilangan sum_pair = arr[i] + arr[j] # Periksa apakah hasil penjumlahan sudah ada dalam dictionary if sum_pair in pair_dict: # Jika sudah ada, tambahkan pasangan bilangan ke daftar pair_dict[sum_pair].append((arr[i], arr[j])) else: # Jika belum ada, buat entri baru dalam dictionary pair_dict[sum_pair] = [(arr[i], arr[j])] # Kembalikan dictionary yang berisi pasangan bilangan yang sama hasil penjumlahannya return pair_dict 2. Pada algoritma tersebut, terdapat dua loop bersarang (nested loops): 1) Loop pertama (iterasi dari i = 0 hingga n-1) 2) Loop kedua (iterasi dari j = i+1 hingga n-1) Jumlah operasi perbandingan dalam loop kedua = (n-1) * n / 2. Namun, dalam setiap iterasi loop kedua, dilakukan juga beberapa operasi aritmatika, yaitu penjumlahan arr[i] + arr[j], dan pengecekan apakah hasil penjumlahan tersebut sudah ada dalam dictionary. Jadi, jumlah operasi perbandingan dalam algoritma ini adalah: (n-1) * n / 2 * Θ (1) = (n2 - n) / 2 * Θ (1) Oleh karena itu, worst-case time complexity dari algoritma ini adalah Θ (n2) karena jumlah operasi perbandingannya adalah kuadratik terhadap panjang list (n).