문제 해결/BaekJoon

[백준] [C++] 11655번 ROT13

WSLim_97 2023. 1. 19. 23:43
반응형

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

 

11655번: ROT13

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

www.acmicpc.net


코드

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

int main()
{
	string str;
	getline(cin, str);

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

		cout << str[i];
	}

	return 0;
}

풀이

알파벳과 숫자로만 이루어진 문자열을 입력받았을 때 ROT13의 암호화 방식을 사용해 암호화한 후 그 결과를 출력하는 문제이다.

 

ROT13 암호화는 알파벳에만 해당하고 숫자와 공백은 그대로 지나친다.

 

알파벳에만 해당하기 때문에 다른 문자가 나오지 않도록 범위를 조건으로 하여 계산하였다.

반응형