코딩로그
[백준/BOJ/C++] 2703번 Cryptoquote 본문
[문제]
Cryptoquote는 어떤 메시지가 있을 때, 각 알파벳을 다른 알파벳으로 변환해 암호화 하는 방법이다.
예를 들어, HPC PJVYMIY란 메시지가 있을 때, 이를 원래 메시지로 바꾼다면 ACM CONTEST가 된다.
위의 예를 바꾸는 규칙은 H=A, P=C, C=M, J=O, V=N, Y=T, M=E, I=S이다. 이처럼 Cryptoquote를 하려면, 문자와 문자 사이의 규칙이 있어야 한다.
암호화된 메시지와 문자와 문자 사이의 규칙이 주어졌을 때, 이를 원래 메시지로 바꾸는 프로그램을 작성하시오.
[입력]
첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1000)가 주어진다. 각 테스트 케이스는 다음과 같이 두 줄로 구성되어 있다.
테스트 케이스의 첫째 줄에는 암호화된 메시지가 주어지고, 둘째 줄에는 변환 규칙이 주어진다. 변환 규칙은 알파벳 대문자 26글자로 이루어져있고, 암호회된 메시지의 길이는 100 이하이다.
첫 번째 문자는 A에 해당하는 문자, 두 번째는 B, ..., 26번째는 Z에 해당하는 문자이다. 변환 규칙은 중복되지 않는다. 암호화된 메시지에는 공백이 있을 수 있고, 이것은 원래 메시지에도 포함되어야 한다.
[출력]
각 테스트 케이스에 대해서 한 줄에 하나씩 원래 메시지를 출력한다.
[Source Code]
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;
int main() {
int test;
cin >> test;
cin.ignore();
for(int i = 0; i < test; i++){
string m, rule;
getline(cin, m);
getline(cin, rule);
for(int j = 0; j < m.length(); j++){
if(m[j] >= 'A' && m[j] <= 'Z'){
cout << rule[m[j] - 'A'];
}
else
cout << " ";
}
cout << "\n";
}
}
[결과 화면]
'YJ > C++' 카테고리의 다른 글
[백준/BOJ/C++] 4641번 Doubles (0) | 2021.12.31 |
---|---|
[백준/BOJ/C++] 11772번 POT (0) | 2021.12.31 |
[백준/BOJ/C++] 2495번 연속구간 (0) | 2021.12.31 |
[백준/BOJ/C++] 1453번 피시방 알바 (0) | 2021.12.31 |
[백준/BOJ/C++] 1871번 좋은 자동차 번호판 (0) | 2021.12.31 |