Home 프로그래머스 - 시저 암호 Javascript
Post
Cancel

프로그래머스 - 시저 암호 Javascript

시저 암호

문제 설명

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 “AB”는 1만큼 밀면 “BC”가 되고, 3만큼 밀면 “DE”가 됩니다. “z”는 1만큼 밀면 “a”가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.

제한 조건

  • 공백은 아무리 밀어도 공백입니다.
  • s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
  • s의 길이는 8000이하입니다.
  • n은 1 이상, 25이하인 자연수입니다.

입출력 예

snresult
“AB”1“BC”
“z”1“a”
“a B z”4“e F d”

풀이방식

charCoadAt으로 ascii코드로 바꿔주고, n만큼 이동 (더해주고), 다시 fromCharCode로 알파벳으로변형해주면 된다.

다만, 문제에 따르면 z를 넘어서면 다시 a가 된다. 즉 알파벳으로만 순환되는 구조이다.

따라서, z를 지나면 다시 a가 되는 구조이도록, 손을 봐주어야 한다.

z의 ascii 코드는 122이고, Z는 90이기 때문에 소문자이냐 대문자이냐에 따라서만 이 값을 지정해주고, 이 값을 넘어서면 26을 빼서 다시 알파벳 처음부터 순환하도록 바꿔주면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function solution(s, n) {
  let answer = "";
  for (let i = 0; i < s.length; i++) {
    if (s[i] == " ") {
      answer = answer.concat(" ");
      continue;
    }

    let ascii = s[i].charCodeAt() + n;
    let ascii_z = s[i] == s[i].toLowerCase() ? 122 : 90;
    let final = ascii > ascii_z ? ascii - 26 : ascii;

    answer = answer.concat(String.fromCharCode(final));
  }
  return answer;
}
This post is licensed under CC BY 4.0 by the author.

프로그래머스 - 소수 찾기 Javascript

프로그래머스 - 이상한 문자 만들기 Javascript