白準9322鉄壁安全アルゴリズム(実施)


問題では公開鍵1,2と暗号鍵が別々であるため、公開鍵1,2に対するインデックスの位置が分かれば、暗号鍵でコメントを復元することができる.
テストケース1
A B C D
D A B C
の場合は、移動したインデックスを確認します.
0 1 2 3
3 0 1 2
いいですよ.したがって、このインデックスをMAPに挿入し、キー値をロードするときにvalueの値に基づいてコメントに貼り付けることができます.
暗号文はC B A P(30 1 2)の順なので、コメントはB A P C(0 1 2 3)のはずです.
import java.util.*;

public class Main {
    public static void main (String[]args) {
        Scanner scanner = new Scanner(System.in);
        int test = scanner.nextInt();

        for(int t=0; t<test; t++){
            int n = scanner.nextInt();
            Map<Integer,Integer> map = new HashMap<>();     //map<in1 word idx, in2 word idx>
            String[] s1 = new String[n];
            String[] s2 = new String[n];
            String[] pass = new String[n];
            String res = "";

            for(int i=0; i<n; i++){
                s1[i] = scanner.next();
            }
            for(int i=0; i<n; i++){
                s2[i] = scanner.next();
            }
            for(int i=0; i<n; i++){
                pass[i] = scanner.next();
            }

            for(int i=0; i<n; i++){
                for(int j=0; j<n; j++){
                    if(s1[i].equals(s2[j]))
                        map.put(i,j);
                }
            }

            for(Integer i:map.values()){
                res += (pass[i] + " ");
            }
            System.out.println(res);
        }
    }
}