문제 설명이 장황한데, 그냥 제 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 |
'컴퓨터 사이언스 > 1고리즘' 카테고리의 다른 글
백준 2660 : 회장뽑기 (4) | 2021.03.17 |
---|---|
백준 12018 : Yonsei TOTO (5) | 2021.03.10 |
백준 4375 : 1 (1) | 2021.03.10 |
백준 3896 : 소수 사이 순열 (0) | 2021.03.10 |
백준 12767 : Ceiling Function (0) | 2021.03.04 |