-
[Baekjoon(백준)][11655번] ROT13(C++)2024년 01월 24일
- 유니얼
-
작성자
-
2024.01.24.:22
728x90안녕하세요! 오늘은 코딩테스트 문제 중 하나인 "ROT13" 문제를 해결하는 방법에 대해 설명하려고 합니다. "ROT13" 문제는 주어진 문자열을 ROT13 암호화 방식으로 변환하는 문제입니다. 문제를 해결하는 과정과 코드를 자세히 알아보겠습니다.
문제링크:
https://www.acmicpc.net/problem/11655
문제 개요
"ROT13" 문제는 주어진 문자열을 ROT13 암호화 방식으로 변환하는 문제입니다. ROT13 암호화는 알파벳 대문자와 소문자를 각각 13글자씩 밀어서 만드는 방식입니다. 이 문제는 문자열 처리 및 조건문 사용 능력을 평가합니다.
해결 방법
이 문제를 해결하기 위해서는 각 문자가 알파벳인지 판별하고, 알파벳인 경우 13글자를 밀어 암호화된 문자를 구해야 합니다. 대문자와 소문자를 구분하여 처리해야 하며, 문자가 'z' 또는 'Z'를 넘어가는 경우에는 26을 빼서 알파벳 범위 내로 조정합니다.
코드 구현
#include <iostream> #include <string> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string str = ""; getline(cin, str); // 공백을 포함한 문자열 입력 받기 // 문자열의 각 문자에 대해 반복 for (int i = 0; i < str.size(); i++) { int temp = str[i]; // 현재 문자를 임시 변수에 저장 int ret = 0; // 변환된 문자를 저장할 변수 char retchar = ' '; // 변환된 문자를 char 타입으로 저장할 변수 // 대문자인 경우 ROT13 암호화 적용 if (temp >= 'A' && temp <= 'Z') { ret = str[i] + 13; if (ret > 'Z') ret -= 26; // 'Z'를 넘어가는 경우 알파벳 범위 내로 조정 retchar = ret; str[i] = retchar; } // 소문자인 경우 ROT13 암호화 적용 else if (temp >= 'a' && temp <= 'z') { ret = str[i] + 13; if (ret > 'z') ret -= 26; // 'z'를 넘어가는 경우 알파벳 범위 내로 조정 retchar = ret; str[i] = retchar; } } cout << str << "\n"; // 변환된 문자열 출력 }
코드 설명
이 코드는 주어진 문자열 str에 대해 각 문자를 확인하고, 해당 문자가 알파벳인 경우 ROT13으로 암호화합니다. isalpha 함수는 문자가 알파벳인지 확인하며, isupper 함수는 대문자인지 확인합니다. 각 알파벳 문자는 해당 범위 내에서 13글자씩 밀려 암호화됩니다.
결론
"ROT13" 문제는 문자열을 처리하고 조건에 따라 변환하는 기본적인 알고리즘을 이해하는 데 도움이 되며, 암호화 및 문자열 처리와 관련된 다양한 문제에 적용될 수 있는 접근 방식입니다.
반응형다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드
받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이
감지되어도 모달 창이 표시되지 않습니다.)