質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

2回答

576閲覧

AtCoder Beginner Contest 219C 間違っている箇所を知りたい

den7

総合スコア28

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2022/04/23 06:36

AtCoder Beginner Contest 219C(こちら)がWAとなってしまいます。
どの部分が間違っているかご教授いただけないでしょうか。

Java

1import java.util.*; 2 3public class Main { 4 static List<Integer> l=new ArrayList<Integer>(); 5 public static void main(String[]args){ 6 Scanner sc=new Scanner(System.in); 7 String x=sc.next(); 8 String[] xa=x.split(""); 9 Map<String,Integer> xmap=new HashMap<>(); 10 for(int i=0;i<26;i++){ 11 xmap.put(xa[i],i+1); 12 } 13 int n=sc.nextInt(); 14 List<List<String>> s=new ArrayList<List<String>>(); 15 Map<Long,String> ansmap=new HashMap<>(); 16 String ss[]=new String[n]; 17 for(int i=0;i<n;i++){ 18 ss[i]=sc.next(); 19 List sa=new ArrayList<>(Arrays.asList(ss[i].split(""))); 20 s.add(sa); 21 } 22 long ans[]=new long[n]; 23 for(int i=0;i<n;i++){ 24 long a=0; 25 for(int j=0;j<s.get(i).size();j++){ 26 a+=xmap.get(s.get(i).get(j))*Math.pow(26,9-j); 27 } 28 ans[i]=a; 29 ansmap.put(ans[i],ss[i]); 30 } 31 Arrays.sort(ans); 32 for(int i=0;i<n;i++){ 33 System.out.println(ansmap.get(ans[i])); 34 } 35 } 36} 37

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

並べ替えですので Comparator だけ作ればよいのでは。

java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) { 5 execute("bacdefghijklmnopqrstuvwxzy", Arrays.asList("abx", "bzz", "bzy", "caa")); 6 System.out.println("----"); 7 execute("zyxwvutsrqponmlkjihgfedcba", Arrays.asList("a","ab","abc","ac","b")); 8 System.out.println("----"); 9 execute("abcdefghijklmnopqrstuvwxyz", Arrays.asList("az","b")); 10 } 11 static void execute(String dic, List<String> names) { 12 Collections.sort(names, (a, b) -> { 13 int length = Math.min(a.length(), b.length()); 14 for(int i=0; i<length; i++) { 15 int v = dic.indexOf(a.charAt(i)) - dic.indexOf(b.charAt(i)); 16 if(v != 0) return v; 17 } 18 return a.length() - b.length(); 19 }); 20 for(String name : names) System.out.println(name); 21 } 22}

plain

1bzz 2bzy 3abx 4caa 5---- 6b 7a 8ac 9ab 10abc 11---- 12az 13b

投稿2022/04/24 14:42

jimbe

総合スコア12646

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

den7

2022/05/05 00:23

返信が遅くなってしまい申し訳ございません、。 こちらの方がスマートですね! 大変勉強になりました。ありがとうございます!
guest

0

ベストアンサー

こちらの入力例でデバッグしてみてください。

text

1abcdefghijklmnopqrstuvwxyz 22 3az 4b

投稿2022/04/23 08:10

actorbug

総合スコア2224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

den7

2022/04/23 08:45

ありがとうございます!ACできました。累乗のところがよくなかったみたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問