Problem Solving/Baekjoon
[백준] 9322 철벽 보안 알고리즘 - Data Structure / Java
graycode
2023. 3. 20. 20:17
• 문제 링크
9322번: 철벽 보안 알고리즘
소희는 공개키와 개인키 한 쌍으로 보안을 유지하는 것이 매우 불편하다고 생각했다. 그래서 소희는 공개키만을 이용하는 암호화 체계를 개발했다. 이를 "철벽 보안 알고리즘"이라고 부르기로
www.acmicpc.net
• 풀이 과정
제 1 공개키의 각 단어의 순서를 map에 저장한다.
제 2 공개키를 입력받을 때, 각 단어의 제 1 공개키 단어와 대응되는 순서 값을 배열에 저장한다.
다음 평문을 입력받을 때, 배열에 저장된 단어 배치 순서를 역으로 참조해,
각각의 단어를 정답 배열에 저장 및 공백으로 구분해 출력한다.
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int tc = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while (tc-- > 0) {
int n = Integer.parseInt(br.readLine());
Map<String, Integer> map = new HashMap<>();
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++)
map.put(st.nextToken(), i);
int[] pattern = new int[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++)
pattern[i] = map.get(st.nextToken());
String[] res = new String[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++)
res[pattern[i]] = st.nextToken();
for (String s : res)
sb.append(s).append(" ");
sb.append("\n");
}
bw.write(sb.toString());
bw.flush();
}
}