Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 문자열의 알파벳을 n칸 뒤 알파벳으로 치환하는 방법

이번 글에서는 알파벳으로 이루어진 문자열과 숫자 n을 입력받아, 각 문자를 n칸 뒤에 위치한 알파벳으로 바꾼 새로운 문자열을 반환하는 JavaScript 함수를 만들어 보겠습니다.

예를 들어 입력값이 다음과 같다면,

const str = 'abcd';
const n = 2;

출력 결과는 아래와 같아야 합니다.

const output = 'cdef';

동작 원리

핵심 아이디어는 간단합니다.

  • 알파벳 전체(a~z)를 하나의 기준 문자열로 정의합니다.
  • 입력 문자열의 각 문자가 알파벳에서 몇 번째 위치인지 indexOf()로 확인합니다.
  • 해당 위치에 n을 더한 뒤, 알파벳 길이(26)로 나머지 연산(%)을 하면 범위를 벗어나지 않고 순환할 수 있습니다. 예를 들어 'y'에서 2칸 뒤는 'a'가 되도록 처리됩니다.

구현 예제

const str = 'abcd';
const n = 2;

const replaceNth = (str, n) => {
  const alphabet = 'abcdefghijklmnopqrstuvwxyz';
  let i, pos, res = '';

  for(i = 0; i < str.length; i++){
    pos = alphabet.indexOf(str[i]);
    res += alphabet[(pos + n) % alphabet.length];
  };
  return res;
};

console.log(replaceNth(str, n));

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

cdef

정리

이 방식은 흔히 알려진 시저 암호(Caesar Cipher)와 같은 원리입니다. 나머지 연산자를 활용하면 알파벳 끝('z')을 넘어갈 때 자동으로 처음('a')부터 다시 순환하기 때문에, 어떤 숫자 n이 입력되더라도 안전하게 동작합니다. 대소문자 처리나 공백 유지 등 추가 요구사항이 있다면, 조건문으로 각 경우를 분기하여 확장하면 됩니다.