시저 암호는 각 알파벳 문자를 일정 거리만큼 밀어 새로운 문자를 만드는 고전적인 암호화 방식으로, 이 문제에서는 공백과 대소문자 처리를 정확히 해주는 것이 핵심이다.

사용한 함수와 헤더

  • #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` 로 순환 이동 처리

배운 점

- 대문자와 소문자를 판별해 각각 알맞은 기준점에서 밀어야 올바른 결과가 나옴

 

- 공백은 예외 처리하여 그대로 유지해야 함

 

- 시저 암호는 모듈러 연산과 아스키 코드 계산을 통해 쉽게 구현 가능함