問題:http://codeforces.com/contest/51/problem/A
参加形式:本番
2×2の正方形があって各マスに数字がふってある.回転させて同じ位置に同じ数字がくるものを一つとして数えると,入力された2×2の正方形群は何個として数えられるか.
途中から参加して時間がなかったため簡単に実装しようとしてHashSetを使おうとしたが,HashSetによるオブジェクトの分類をhashcodeだかequalsだか忘れたのでとりあえずequalsを実装するだけという中途半端な実装になってしまった.
import java.util.*; public class A_CheateriussProblem { public static void main(String[] args) { Scanner s = new Scanner(System.in); Set<Amulet> set = new HashSet<Amulet>(); int result = 0; for (int n = s.nextInt(); n-- > 0;) { s.nextLine(); String x = s.nextLine(),y = s.nextLine(); Amulet a = new Amulet(x + y.charAt(1) + y.charAt(0)); boolean b = true; for(Amulet am : set){ if(a.equals(am)){ b = false; } } if(b){ set.add(a); ++result; } } System.out.println(result); } static class Amulet { String str; public Amulet(String str) { this.str = str; } @Override public boolean equals(Object obj) { Amulet other = (Amulet) obj; for(int i = 0; i < str.length(); ++i){ if(other.str.equals(str.substring(i)+str.substring(0,i))){ return true; } } return false; } } }