ASCII 코드란?
ASCII(American Standard Code for Information Interchange)는 7비트 문자 인코딩 방식으로, 각 비트 조합이 고유한 문자 하나를 나타냅니다.
영어 알파벳의 모든 문자는 각각 고유한 십진수 ASCII 코드 값을 가지고 있습니다. 예를 들어 대문자 'A'는 65, 소문자 'a'는 97에 해당합니다.
이번 글에서는 두 개의 문자열을 입력받아 각 문자열의 ASCII 점수(문자열을 구성하는 모든 문자의 ASCII 십진수 값의 합)를 계산한 뒤, 두 점수의 차이를 반환하는 함수를 작성해 보겠습니다.
구현 방법
먼저 split("")으로 문자열을 개별 문자 배열로 분리한 후, reduce() 메서드와 charCodeAt(0)을 활용해 각 문자의 ASCII 값을 누적하여 점수를 계산합니다. 이후 두 점수의 차이를 Math.abs()로 절댓값 처리하여 반환하면 됩니다.
예제 코드
const str1 = 'This is the first string.';
const str2 = 'This here is the second string.';
// 문자열의 ASCII 점수(각 문자 ASCII 값의 합)를 계산하는 함수
const calculateScore = (str = '') => {
return str.split("").reduce((acc, val) => {
return acc + val.charCodeAt(0);
}, 0);
};
// 두 문자열의 ASCII 점수 차이를 구하는 함수
const compareASCII = (str1, str2) => {
const firstScore = calculateScore(str1);
const secondScore = calculateScore(str2);
return Math.abs(firstScore - secondScore);
};
console.log(compareASCII(str1, str2));실행 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.
536
코드 설명
calculateScore 함수는 charCodeAt(0)을 사용해 각 문자의 첫 번째(유일한) 문자에 해당하는 ASCII 코드 값을 가져옵니다. 빈 문자열이 전달될 경우 reduce의 초기값인 0이 그대로 반환되므로 안전하게 동작합니다.
compareASCII 함수는 두 문자열의 점수를 각각 계산한 뒤, 두 값의 차이를 Math.abs()로 절댓값 변환하여 반환합니다. 이렇게 하면 어떤 문자열이 더 큰 점수를 가지더라도 항상 양수 형태의 차이를 얻을 수 있습니다.