[伯俊]1655 ROT 13


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

質問する


ROT 13はシーザーパスワードの一種で、13文字の英字でまとめられています.
例えば、「BaekjoonオンラインJudge」をROT 13に暗号化すると、「Onrxwbba Bayvar Whqtr」となる.暗号化されたROT 13のコンテンツを元のコンテンツに変換するには、暗号化された文字列をROT 13に再変換するだけです.先に暗号化した文字列「Onrxwbba Bayvar Whqtr」にROT 13を再度適用すると、「BaekjoonオンラインJudge」となります.
ROT 13はアルファベットの大文字と小文字にしか適用できません.アルファベット以外の字はそのままにしなければならない.例えば、「Oneis 1」をROT 13に暗号化すると、「Bar vf 1」となる.
文字列が指定されている場合は、「ROT 13」を使用して出力プログラムを暗号化して作成します.

解釈中のAskyコード



プール(C+)

#include <bits/stdc++.h>
using namespace std; 
string s;
int main(){
    ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    getline(cin, s); //문자열 띄어쓰기까지 그대로 받기
    for(char a : s){
        if(a>='A' && a<'a'){ //대문자일경우
            if(a+13 > 'Z'){ // 13을 더햇는데 Z보다 클경우
                a = a - 26 + 13; //A로 돌아가서 13을 더함
            }else{
                a += 13;
            }
        }else if(a>='a' && a<='z'){ //소문자일경우
            if(a+13 > 'z'){
                a = a - 26 + 13;
            }else{
                a += 13;
            }
        }
        cout<<a;
    }
    return 0;
}

プール(Python)

#ord() : 알파벳 => 아스키코드 
#chr() : 아스키코드 => 알파벳으로
s = input()
for i in s:
    if i.isupper(): #대문자
        if ord(i)+13 > ord('Z'): 
            print(chr(ord(i) - 26 + 13), end='')
        else: print(chr(ord(i) + 13), end='')
    elif i.islower(): #소문자
        if ord(i)+13 > ord('z'):
            print(chr(ord(i) - 26 + 13), end='')
        else:
            print(chr(ord(i) + 13), end='')
    else:
        print(i, end='')