[C++][백준 11655] ROT13

PublicMinsu·2025년 8월 6일

문제

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로 형변환하여 해결해야 된다는 점, 공백으로 시작할 수 있기에 공백을 포함한 입력을 받아야 한다는 점등이 있습니다.

profile
연락 : publicminsu@naver.com

0개의 댓글