이 문제는 아스키코드표를 참고하여 풀었다.
function solution5(str, n) {
let answer = "";
for (let i = 0; i < str.length; i++) {
let asciiCode = str[i].charCodeAt();
console.log(asciiCode);
// 대문자 처리
if (asciiCode >= 65 && asciiCode <= 90) {
let plusNum = asciiCode + n;
if (plusNum > 90) {
// Z를 넘어서면 다시 A로 돌아오도록 -26
answer += String.fromCharCode(plusNum - 26);
} else {
answer += String.fromCharCode(plusNum);
}
// 소문자 처리
} else if (asciiCode >= 97 && asciiCode <= 122) {
let plusNum = asciiCode + n;
if (plusNum > 122) {
// z를 넘어서면 다시 a로 돌아오도록 -26
answer += String.fromCharCode(plusNum - 26);
} else {
answer += String.fromCharCode(plusNum);
}
// 공백 처리
} else if (str[i] === " ") {
answer += " ";
}
}
return answer;
}
console.log(solution5("AB", 1)); // "BC"
console.log(solution5("z", 1)); // "a"
console.log(solution5("a B z", 4)); // "e F d"