문제 설명 :
암호화된 문자열과 암호화 키를 입력받아 복호화된 문자열을 리턴해야 한다.
카이사르 암호(Caesar cipher)는 평문(plaintext)을 암호키 secret개만큼 (오른쪽으로) 평행이동시켜 암호화 한다. 복호화는 암호화된 문자열을 원래의 평문으로 복원하는 것을 말한다. 알파벳 순서대로 배열을 만든 뒤 입력받은 secret에 따라 카이사르 암호를 복호화 하면 된다.
'hello'를 secret 3으로 암호화한 경우: 'khoor'
'codestates'를 secret 11로 암호화한 경우: 'nzopdelepd'
입력
인자 1 : str
인자 2 : secret
출력
주의 사항
입출력 예시
let output = decryptCaesarCipher('khoor', 3);
console.log(output); // --> hello
output = decryptCaesarCipher('zruog', 3);
console.log(output); // --> world
풀이코드 설명
function decryptCaesarCipher(str, secret) {
//알파벳을 words 배열에 선언
const words = [
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
];
let idx = 0;
let newArr = "";
for (let i = 0; i < str.length; i++) {
//공백일 경우 공백을 더하기
if (str[i] === " ") {
newArr += " ";
} else {
// 인덱스에서 시크릿을 뺀 만큼 더해준다.
idx = words.indexOf(str[i]);
if (idx - secret >= 0) {
//1-2면 = -1
newArr += words[idx - secret];
} else {
newArr += words[26 + (idx - secret)];
}
}
}
return newArr;
}
알고리즘 문제풀이 toy - orderOfPresentation (0) | 2022.12.30 |
---|---|
알고리즘 문제풀이 - compressString (2) | 2022.12.29 |
알고리즘 문제풀이 - numberSearch (0) | 2022.12.28 |
알고리즘 문제풀이 - computeSquareRoot (0) | 2022.12.28 |
알고리즘 문제풀이 - isIsogram (0) | 2022.12.27 |