https://www.acmicpc.net/problem/11655
char을 int처럼 다룰 수 있는 점을 활용하면 됩니다.
#include <iostream>
using namespace std;
string str;
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
getline(cin, str);
for (unsigned char c : str)
{
if (c >= 'A' && c <= 'Z')
{
c += 13;
if (c > 'Z')
{
c -= 26;
}
}
else if (c >= 'a' && c <= 'z')
{
c += 13;
if (c > 'z')
{
c -= 26;
}
}
cout << c;
}
return 0;
}
13을 더한 뒤 a~z 또는 A~Z 범위를 벗어난 경우 26을 빼주면 됩니다.
주의해야 할 점은 char의 범위를 벗어날 수 있기에 unsigned char를 활용하거나 int로 형변환하여 해결해야 된다는 점, 공백으로 시작할 수 있기에 공백을 포함한 입력을 받아야 한다는 점등이 있습니다.