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

JavaScript 문자열 뒤집기와 ASCII 코드 변환 알고리즘 구현 방법

문제 정의

주어진 알고리즘에 따라 메시지를 변환하는 JavaScript 함수를 작성해야 합니다. 우리가 알고 있는 정보는 오직 해당 메시지에 적용된 암호화 알고리즘뿐이며, 이 알고리즘의 동작을 코드로 구현하는 것이 목표입니다.

알고리즘은 다음 세 단계로 구성됩니다.

  • 문자열 뒤집기: 메시지 문자열의 순서를 거꾸로 뒤집습니다.
  • ASCII 코드 치환: 모든 영문자를 작은따옴표로 감싼 ASCII 코드 값으로 대체합니다. 예를 들어 A는 '65', h는 '104'가 됩니다.
  • 숫자와 공백 유지: 숫자와 공백은 변환 없이 그대로 삽입합니다.

즉, 이 함수는 위 과정을 그대로 수행하여 변환된 결과 문자열을 반환해야 합니다.

예제 코드

다음은 위 알고리즘에 따라 문자열을 변환하는 JavaScript 코드입니다.

const str = '12 hello world 30';
const decryptString = (str = '') => {
    const alpha = 'abcdefghijklmnopqrstuvwxyz';
    let res = '';
    for(let i = str.length - 1; i >= 0; i--){
        const el = str[i];
        if(alpha.includes(el.toLowerCase())){
            res += `'${el.charCodeAt(0)}'`;
        }else{
            res += el;
        };
    };
    return res;
};
console.log(decryptString(str));

코드 설명

핵심 로직을 단계별로 살펴보면 다음과 같습니다.

  • for 루프를 문자열의 마지막 인덱스부터 0까지 역순으로 순회하며 문자열을 뒤집습니다.
  • 각 문자가 알파벳(a~z, 대소문자 무관)에 속하는지 includes() 메서드로 확인한 뒤, 알파벳이라면 charCodeAt()으로 ASCII 코드 값을 구해 작은따옴표로 감싸 결과에 추가합니다.
  • 숫자나 공백처럼 알파벳이 아닌 문자는 변환 없이 그대로 결과 문자열에 이어 붙입니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

03 '100''108''114''111''119' '111''108''108''101''104' 21

입력 문자열 '12 hello world 30'이 먼저 뒤집혀 '03 dlrow olleh 21' 형태가 되고, 이후 각 알파벳이 ASCII 코드로 치환된 최종 결과를 확인할 수 있습니다. 이처럼 문자열 순회와 charCodeAt() 메서드만 활용하면 별도의 라이브러리 없이도 간단하게 변환 로직을 구현할 수 있습니다.