카이사르의 암호[Caesar Cipher] - easy
2021. 3. 27. 03:59ㆍAlgorithm/easy
카이사르의 암호[Caesar Cipher]
카이사르 로마제국의 악당? 황제같은 이미지가 있다. 이 사람이 만들었다는 암호이다.
카이사르 암호란 특정 키 값을 각 문자에 더한 값만큼의 문자로 만드는 것이다.
즉 아래의 사진만큼 키 값을 더한 만큼의 문자를 만들어주면 되는 것이다.
여기서 따로 예외 처리를 해주어야 하는 것은 바로 'z' 이상으로 키 값이 넘어갔을 때나 키 값이 알파벳 개수보다 커질 때이다. 더해준 값이 넘어갔을 때다.
1. 알파뱃 개수보다 키 값이 커질 때
key %= 26;
key 값에 나머지를 저장함으로써 키 값이 27이면 결국 1만큼 이동해준 것과 같기 때문에 26으로 나머지를 구해준다.
2. 키 값을 더했을 때 z보다 커질 때
newletterCode <= 'z'? newletterCode : 'a' + newletterCode - 'z' - 1
만약 newLetterCode가 z를 뺐을 때 1이면 결국 a를 뜻하는 거니 a에 1을 빼주어서 변화되는 값을 더해주면 된다.
더보기
using namespace std;
char toCaesarCypher(char letter, int key){
int newletterCode = letter + key;
return newletterCode <= 'z'? newletterCode : 'a' + newletterCode - 'z' - 1;
}
string caesarCypherEncryptor(string str, int key) {
key %= 26;
for(int i = 0; i < str.size(); i++){
str[i] = toCaesarCypher(str[i], key);
}
return str;
}
'Algorithm > easy' 카테고리의 다른 글
Generate Document - Easy (0) | 2021.03.27 |
---|---|
Run Length Encoding(문자 개수 만큼 압축) (0) | 2021.03.27 |
팰린드롬인지 체크하기 - easy (0) | 2021.03.27 |