본문 바로가기

백준/C++

[BaeKJoon/C++] 백준 5598 c++ 카이사르 암호

반응형

https://www.acmicpc.net/problem/5598

 

5598번: 카이사르 암호

가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건

www.acmicpc.net

문제

변환전    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
변환후    D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

예를 들어서, 이 방법대로 단어 'JOI'를 카이사르 단어 형식으로 변환한다면 'MRL'을 얻을 수 있고, 앞의 예와 같은 방법으로 얻은 카이사르 단어 'FURDWLD'를 원래 단어로 고치면 'CROATIA'가 된다.

입력

입력은 한 줄로 이루어져 있으며, 그 한 줄에는 대문자 알파벳으로 구성된 단어가 1개 있다. 단어는 최대 1000자 이하이다.

출력

입력받은 카이사르 단어를 원래 단어로 고친 걸 출력하시면 된다.

 

코드

#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
 
    string str;
    cin>>str;
 
    int len = str.length();
 
    char ch;
 
    for(int i=0; i<len; i++){
        char c = str[i];
        // A = 65 B = 66 C = 67
        // c가 A,B,C일때만
        // A->X B->Y C->Z
        if(int(c)>=65&&int(c)<=67){
            ch = int(c)+23;
        }
        else{
// ex) M = 77 J = 74
            ch = int(c)-3;
        }
        cout<<ch;
    }
    return 0;
}
cs

 

 

반응형