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

JavaScript에서 문자열의 알파벳 가중치 계산하기

코딩 테스트나 프로그래밍 문제에서 자주 등장하는 개념인 '문자열의 가중치(weight)'를 JavaScript로 계산하는 방법을 알아보겠습니다.

알파벳 문자의 가중치란?

영어 알파벳의 가중치는 별도의 규칙 없이 단순히 1부터 시작하는 인덱스(1-based index) 값입니다.

예를 들어, 'a'의 가중치는 1, 'c'의 가중치는 3, 'k'의 가중치는 11과 같습니다.

따라서 우리는 소문자로 이루어진 문자열을 입력받아, 문자열 내 모든 문자의 가중치 합계를 계산하여 반환하는 JavaScript 함수를 작성해야 합니다.

구현 예제 코드

이를 구현한 코드는 다음과 같습니다.

const str = 'this is a string';
const calculateWeight = (str = '') => {
    str = str.toLowerCase();
    const legend = 'abcdefghijklmnopqrstuvwxyz';
    let weight = 0;
    const { length: l } = str;
    for(let i = 0; i < l; i++){
        const el = str[i];
        const curr = legend.indexOf(el);
        weight += (curr + 1);
    };
    return weight;
};
console.log(calculateWeight(str));

코드 동작 원리

  • toLowerCase() 메서드를 사용해 입력 문자열을 모두 소문자로 변환합니다.
  • 알파벳 순서가 담긴 legend 문자열에서 indexOf()로 각 문자의 위치(0부터 시작)를 찾고, 여기에 1을 더해 1-based 가중치를 구합니다.
  • 공백처럼 알파벳이 아닌 문자는 indexOf()가 -1을 반환하므로 -1 + 1 = 0이 되어 합계에 영향을 주지 않습니다.

실행 결과

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

172

'this is a string'이라는 문자열의 각 알파벳 가중치를 모두 더하면 172가 되며, 공백은 가중치 0으로 처리됩니다.