#include <string>
#include <vector>
using namespace std;
string solution(string s, int n)
{
for(int i = 0; i < s.length(); ++i)
{
char NowChar = s[i];
// 공백일 경우
if(NowChar == ' ') continue;
// 대소문자 경우에 따라 알파벳 순환 이동(circular shifting)
int Case = (NowChar >= 'a') ? 'a' : 'A';
s[i] = Case + (NowChar - Case + n) % 26;
}
return s;
}
s[i] = Case + (NowChar - 'A' + n) % 26
- 26개의 알파벳을 'A'를 0부터 'Z'를 25까지의 숫자로 변환한다.
- 만약 NowChar가 'Z'라고 가정하면 'Z' - 'A'의 값은 25가 된다.
- 여기서 n의 값이 3이라고 가정한다면 28 % 26의 계산식이 되고
- 최종적으로 'A' + 2의 값인 'C'가 s[i]에 들어가게 된다.