카이사르의 암호[Caesar Cipher] - easy

2021. 3. 27. 03:59Algorithm/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