문제 |
암호화된 문자열과 암호화 키를 입력받아 복호화된 문자열을 리턴해야 합니다. 카이사르 암호(Caesar cipher)는 평문(plaintext)을 암호키 secret개만큼 (오른쪽으로) 평행이동시켜 암호화 합니다. 복호화는 암호화된 문자열을 원래의 평문으로 복원하는 것을 말합니다. |
입력 |
인자 1 : str |
string 타입의 알파벳 소문자 문자열 |
인자 2 : secret |
number 타입의 암호화 키 |
출력 |
string 타입을 리턴해야 합니다. |
주의 사항 |
빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다. 공백은 그대로 두어야 합니다. |
code / 풀이
function decryptCaesarCipher(str, secret) {
// 빈 문자열인 경우 빈 문자열을 반환
if (str.length === 0) {
return '';
}
// 주어진 문자열의 각 문자를 순회하며 변환
let decrypted = '';
for (let i = 0; i < str.length; i++) {
// 공백인 경우 그대로 반환하여 decrypted 변수에 더해줌
if (str[i] === ' ') {
decrypted += ' ';
continue;
}
// 알파벳을 숫자로 변환
const charCode = str.charCodeAt(i) - 97;
// secret 값만큼 왼쪽으로 이동
const shifted = (charCode - secret) % 26;
const shiftedCharCode = shifted >= 0 ? shifted + 97 : shifted + 123;
// 공백이 아닐 경우 변환한 숫자를 다시 알파벳으로 변환하여 decrypted 변수에 더해줌
decrypted += String.fromCharCode(shiftedCharCode);
}
return decrypted;
}
사용된 메소드
1. charCodeAt 메소드
문자열에서 해당 인덱스에 위치한 문자의 유니코드 값을 반환한다.
ex ) 'a'.charCodeAt(0)은 97을 반환,이유는 유니코드에서 'a'의 값이 97이기 때문
2. fromCharCode 메소드
유니코드 값을 받아 해당 유니코드를 가지는 문자를 반환한다.
ex ) String.fromCharCode(97)은 'a'를 반환,이유는 유니코드에서 97 값은 'a'를 나타내기 때문
'Coplit' 카테고리의 다른 글
[ Coplit ] - 21_largestProductOfThree 문제 풀이 (0) | 2023.04.20 |
---|---|
[ Coplit ] - 20_ compressString 문제 풀이 (0) | 2023.04.08 |
[ Coplit ] - 18_ numberSearch 문제 풀이 (0) | 2023.04.04 |
[ Coplit ] - 17_ computeSquareRoot 문제 풀이 (2) | 2023.04.02 |
[ Coplit ] - 16_ isIsogram 문제 풀이 (0) | 2023.04.02 |