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

JavaScript에서 알파벳 순서를 거꾸로 뒤집는 함수 만들기

JavaScript로 알파벳 한 글자를 입력받아, 해당 글자가 앞에서부터 몇 번째 위치에 있는지 계산한 후, 같은 위치에 있는 뒤에서부터 센 알파벳을 반환하는 함수를 작성해 보겠습니다.

예를 들어 알파벳 'g'는 앞에서 7번째이므로, 뒤에서 7번째인 't'가 결과로 나와야 합니다.

예제 코드

const alpha = 'g';
const findCounterPart = (alpha = '') => {
    let alphabet = 'abcdefghijklmnopqrstuvwxyz';
    let firstpart = alphabet.substring(0,13).split('');
    let secondpart = alphabet.substring(13).split('').reverse();
    let solution = '';
    if (firstpart.indexOf(alpha) !== -1) {
        solution = secondpart[firstpart.indexOf(alpha)];
    } else {
        solution = firstpart[secondpart.indexOf(alpha)];
    };
    return solution;
};
console.log(findCounterPart(alpha));

실행 결과

t

코드 동작 원리

이 코드는 다음과 같은 단계로 작동합니다.

1. 알파벳을 두 부분으로 분리

'a'부터 'm'까지 앞부분(firstpart)과 'n'부터 'z'까지 뒷부분(secondpart)으로 나눕니다. 이때 뒷부분은 reverse() 메서드로 순서를 뒤집어, 인덱스가 서로 대칭이 되도록 만듭니다.

2. 입력값의 위치 찾기

indexOf()로 입력된 알파벳이 앞부분에 있는지 확인하고, 있다면 뒤집힌 뒷부분에서 같은 인덱스의 문자를 가져옵니다. 없다면 반대로 뒷부분에서 찾아 앞부분에서 대응되는 문자를 반환합니다.

더 간단한 방법: charCodeAt 활용

문자열 조작 없이 아스키 코드 값을 이용하면 훨씬 간결하게 구현할 수 있습니다.

const findCounterPart = (alpha = '') => {
    const pos = alpha.charCodeAt(0) - 97; // 'a' 기준 0부터 시작하는 위치
    return String.fromCharCode(122 - pos); // 'z'(122)에서 역산
};
console.log(findCounterPart('g')); // t

charCodeAt()으로 문자를 숫자로 변환한 뒤 'z'의 코드 값에서 빼주면, 별도의 배열 연산 없이도 대칭되는 알파벳을 바로 얻을 수 있습니다. 성능 면에서도 문자열 분리와 뒤집기를 수행하지 않으므로 더 효율적입니다.