본문 바로가기

코딩테스트 연습/Baekjoon

[Baekjoon] 11655번 : ROT13 (c++)

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

 

11655번: ROT13

첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.

www.acmicpc.net

AM 까지는 아스키코드 값에 +13, NZ까지는 -13 해줘서 변환해준다. (영소문자도 똑같이)

코드

//11655
#include <iostream>
#include <string>
using namespace std;

int main(int argc, const char * argv[]) {
    string input;
    getline(cin,input);

    for(int i=0;i<input.length();i++){
        if( (input[i] >= 65 && input[i] <= 77 ) ) input[i] = (input[i]) + 13;
        else if( input[i] >= 78 && input[i] <= 90) input[i] = input[i] - 13;
        else if(input[i] >= 97 && input[i] <= 109) input[i] = input[i] + 13;
        else if(input[i] >= 110 && input[i] <= 122) input[i] = input[i] - 13;
    }

    for(int i=0;i<input.length();i++)cout<< input[i];
    return 0;
}