Iseng 03-10-2012
Problem:
- Diberikan inputan integer.
- Contoh tampilan jika diinputkan angka 3: 1_2_Hop!_1_2_Hop!_1_2_Hop!~
- Contoh tampilan jika diinputkan angka 4: 1_2_3_Hop!_1_2_3_Hop!_1_2_3_Hop!_1_2_3_Hop!~
- Jika diinputkan angka 9 akan tercetak: What!
Catatan:
_ : spasi
~: enter (“\n”)
Solusi:
public class TestHop { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int count = scan.nextInt(); int words = count; if(count == 9){ System.out.print("What!"); }else{ while(count-- > 0){ for(int i=1; i<words; i++){ System.out.print(i + " "); } System.out.print("Hop!"); if(count != 0){ System.out.print(" "); } } System.out.println(); } } }
Problem:
Diberikan N pasangan titik dalam koordinat Kartesian. Tentukan luas persegi terbesar yang dapat dibagun.
Solusi:
Kita harus tentukan dahulu titik-titik yang akan membentuk persegi, kemudian dihitung luasnya. Saya akan melakukan bruteforce pada dua titik untuk membentuk sisi persegi, lalu mencari 2 titik lainnya.
public class TrySquare { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Set<Titik> set = new HashSet<Titik>(); int count = sc.nextInt(); while(count-- > 0){ set.add(new Titik(sc.nextInt(), sc.nextInt())); } int luas = 0; for(Titik a: set){ for(Titik b: set){ if(a != b){ int vx = b.x - a.x; int vy = b.y - a.y; Titik c = a.translate(-vy, vx); Titik d = b.translate(-vy, vx); if(set.contains(c) && set.contains(d)){ int area = vx*vx + vy*vy; luas = Math.max(luas, area); } } } } System.out.printf("Luas max: %.2f", (double)luas); } } class Titik{ int x,y; public Titik(int x, int y){ this.x = x; this.y = y; } public Titik translate(int dx, int dy){ return new Titik(x+dx, y+dy); } public int hashCode(){ return x*5 + y; } public boolean equals(Object obj){ Titik objTitik = (Titik) obj; return this.x == objTitik.x && this.y == objTitik.y; } }
Categories: Umum
Comments (0)
Trackbacks (0)
Leave a comment
Trackback