시저암호를 사용해 주어진 문자열을 변환해서 리턴해주면 되는 문제이다. 주의할 점은 공백은 안밀린다는 점과, 대소문자 각각 돌아간다는 점이다.
#include <string>
#include <vector>
using namespace std;
string solution(string s, int n) {
for (auto& c : s) {
if (c == ' ') continue ;// 공백 스킵
char a = islower(c) ? 'a' : 'A';// 대문자인지 소문자인지 확인
char z = islower(c) ? 'z' : 'Z';// 처음과 끝 값 기억
c = (c + n) % (z + 1);
if (c < a) c += a;// 넘어간다면 값이 시작보다 작아지므로 시작값 더해줌
}
return s;
}