알고리즘 :: 큰돌 :: Chapter1 - 기초 :: 백준 11655 ROT13

Embedded June·2023년 6월 30일
0
post-thumbnail

문제

문제링크

해설

  • ROT13은 대문자/소문자 영문자를 13글자 앞 또는 뒤로 밀어서 만든 만든 새로운 문자열을 의미합니다.
  • 13번째 알파벳인 'M'을 기준으로 13을 더하면 'Z'이므로, 14번째 알파벳인 'N'은 13을 더하면 안 되고 'A'로 돌아가야 합니다.
  • 그러므로, 14번째 알파벳부터는 13을 뺍니다.
  • 덧셈 밑 나머지연산(%)을 사용하는 것보다 이 방법이 훨씬 간단합니다.
  • 문장을 입력받아야 하므로, cin을 사용해서는 안 되며, getline() 함수를 사용합시다.

코드

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

int main() {
    ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
    string input;
    getline(cin, input);
    for (char& ch : input) {
        if (isupper(ch)) (ch > 'M') ? ch -= 13 : ch += 13;
        else if (islower(ch)) (ch > 'm') ? ch -= 13 : ch += 13;
    }
    cout << input << '\n';
    return 0;
};

코드링크

결과

profile
임베디드 시스템 공학자를 지망하는 컴퓨터공학+전자공학 복수전공 학부생입니다. 타인의 피드백을 수용하고 숙고하고 대응하며 자극과 반응 사이의 간격을 늘리며 스스로 반응을 컨트롤 할 수 있는 주도적인 사람이 되는 것이 저의 20대의 목표입니다.

0개의 댓글