컴퓨터 사이언스/1고리즘
백준 9322 : 철벽 보안 알고리즘
저세상 개발자
2021. 3. 10. 00:31
9322번: 철벽 보안 알고리즘
소희는 공개키와 개인키 한 쌍으로 보안을 유지하는 것이 매우 불편하다고 생각했다. 그래서 소희는 공개키만을 이용하는 암호화 체계를 개발했다. 이를 "철벽 보안 알고리즘"이라고 부르기로
www.acmicpc.net
문제 설명이 장황한데, 그냥 제 1공개키와 제 2공개키의 단어 배치 순서만 확인해서 주어지는 문자열을 재배치 시켜주면 되는 문제이다.
#include <iostream>
#include <string>
#include <unordered_map>
#define fastio ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
using namespace std;
int code2[1000];
string s[1000];
int main() {
fastio;
int t, n;
string tmp;
unordered_map<string, int> code1;
cin >> t;
while (t--) {
cin >> n;
//단어의 원래 위치 해쉬맵에 저장
for (int i = 0; i < n; i++) {
cin >> tmp; code1[tmp] = i;
}
//단어의 바뀐 위치를 인덱스로 가지는 곳의 값에 단어의 원래 위치를 저장
for (int i = 0; i < n; i++) {
cin >> tmp; code2[i] = code1[tmp];
}
//재배치하고자 하는 문장을 입력받아 code2배열을 확인하여 s배열에 재배치
for (int i = 0; i < n; i++) {
cin >> tmp; s[code2[i]] = tmp;
}
for (int i = 0; i < n; i++) {
cout << s[i] << ' ';
s[i] = "";
code2[i] = 0;
}
cout << '\n';
code1.clear();
}
return 0;
}
메모리: 2192 KB | 시간: 24 ms |