[プログラマ]イニシエータパスワード


シーザーのパスワード



この問題はアスキーコードテーブルを参照して解いた.

に答える


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"
  • fromCharCode()はStringの静的方法であるためStringである.fromCharCode()の形で使うべきです.