문제에서 공개키 1,2와 암호키로 구분되어 있기때문에, 공개키 1,2에 대한 인덱스의 위치만 알게되면 암호키로 평문을 복구할 수 있게 된다.
테스트케이스1
A B C D
D A B C
의 경우에서 옮겨진 인덱스를 확인하면
0 1 2 3
3 0 1 2
가 된다. 따라서 이 인덱스를 MAP에 담아주고, key 값을 불러올 때 value의 값에 따라 평문에 붙여주면 된다.
암호문이 C B A P (3 0 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);
}
}
}