Home > Umum > Iseng 03-10-2012

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
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: