본문 바로가기
Develop/백준 (Cpp)

[백준] 2703번 : Cryptoquote (C++)

by Tarra 2023. 2. 17.

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에 해당하는 문자이다. 변환 규칙은 중복되지 않는다. 암호화된 메시지에는 공백이 있을 수 있고, 이것은 원래 메시지에도 포함되어야 한다.

 

 

출력 :

각 테스트 케이스에 대해서 한 줄에 하나씩 원래 메시지를 출력한다.

 

 

 

 

 

풀이)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <string>
 
using namespace std;
 
int main()
{
    int t;
    cin >> t;
    cin.ignore();
    // 버퍼 삭제
 
    string word, alpha;
    for (int i = 0; i < t; i++)
    {    
 
        getline(cin, word);
        getline(cin, alpha);
        int len = word.length();
        for (int j = 0; j < len; j++)
        {
            if (word[j] >= 'A' && word[j] <= 'Z')
            {
                word[j] = alpha[(int)(word[j] - 'A')];
            }
        }
 
        cout << word << "\n";
    }
 
    return 0;
}
cs

출처 : https://www.acmicpc.net/problem/2703 

 

2703번: Cryptoquote

Cryptoquote는 어떤 메시지가 있을 때, 각 알파벳을 다른 알파벳으로 변환해 암호화 하는 방법이다. 예를 들어, HPC PJVYMIY란 메시지가 있을 때, 이를 원래 메시지로 바꾼다면 ACM CONTEST가 된다. 위의 예

www.acmicpc.net