AtCoder Beginner Contest 252C(こちら)が8AC,24WAとなってしまいます。
どの部分が間違っているかご教授いただけないでしょうか。
Java
1import java.util.*; 2import java.util.Map.Entry; 3 4public class Main{ 5 public static void main(String[]args){ 6 Scanner sc = new Scanner(System.in); 7 TreeSet<Integer> ts = new TreeSet<Integer>(); 8 int n = sc.nextInt(); 9 TreeMap<Integer,TreeSet<Integer>> map = new TreeMap<Integer,TreeSet<Integer>>(); 10 for(int i=0;i<n;i++){ 11 String s = sc.next(); 12 String[] sa = s.split(""); 13 for(int j=0;j<10;j++){ 14 int num = Integer.parseInt(sa[j]); 15 if(map.containsKey(num)){ 16 TreeSet<Integer> t = map.get(num); 17 t.add(j); 18 map.put(num,t); 19 }else{ 20 TreeSet<Integer> t = new TreeSet<Integer>(); 21 t.add(j); 22 map.put(num,t); 23 } 24 } 25 } 26 while(!map.isEmpty()){ 27 Entry<Integer, TreeSet<Integer>> e=map.firstEntry(); 28 ts.add(e.getValue().last()+10*(n-e.getValue().size())); 29 map.remove(e.getKey()); 30 } 31 System.out.println(ts.first()); 32 } 33}
ご提示のコードはどのようなアルゴリズムを基に作られたのでしょうか。
それと AtCoder をやったことが無いので分からないのですが、具体的にどのような入力時にダメなのでしょう。
例えば、
4
0123456789
9876543210
0123456789
9876543210
というデータの場合、"0" を揃えるとしたらどの何秒目にどのスロットを止めると何秒で揃えられるでしょうか。
(0秒目,1スロット)
(9秒目,2スロット)
(10秒目,3スロット)
(19秒目,4スロット)
= 19 秒
です。
ご質問のコードでは 29 秒となるのではないでしょうか。
ありがとうございます!解決できました🙇♀️
回答1件
あなたの回答
tips
プレビュー