시저 암호는 각 알파벳 문자를 일정 거리만큼 밀어 새로운 문자를 만드는 고전적인 암호화 방식으로, 이 문제에서는 공백과 대소문자 처리를 정확히 해주는 것이 핵심이다.
사용한 함수와 헤더
#include <string>: 문자열 처리#include <cctype>:isupper사용 (대문자 판별)
최종 코드
#include <string>
#include <cctype>
using namespace std;
string solution(string s, int n) {
string answer = "";
for (char& c : s)
{
if (c == ' ')
{
answer += ' ';
continue;
}
char base = isupper(c) ? 'A' : 'a';
char result = (c - base + n) % 26 + base;
answer += result;
}
return answer;
}
코드 설명: - 공백이면 그대로 복사 - 대문자이면 'A', 소문자이면 'a'를 기준으로 아스키 코드 이동 - `(c - base + n) % 26 + base` 로 순환 이동 처리
배운 점
- 대문자와 소문자를 판별해 각각 알맞은 기준점에서 밀어야 올바른 결과가 나옴
- 공백은 예외 처리하여 그대로 유지해야 함
- 시저 암호는 모듈러 연산과 아스키 코드 계산을 통해 쉽게 구현 가능함