ASCII 코드란?
ASCII(American Standard Code for Information Interchange)는 7비트 문자 인코딩 방식으로, 각 비트 조합이 고유한 문자를 나타냅니다. 영어 알파벳의 모든 글자는 각각 고유한 십진수 ASCII 코드 값을 가지고 있습니다.
이번 문제에서는 두 개의 문자열을 입력받아 각 문자열의 ASCII 점수(문자열을 구성하는 모든 문자의 ASCII 십진수 값의 합)를 계산한 뒤, 그 차이를 반환하는 함수를 작성해야 합니다.
그럼 이 함수의 코드를 작성해 보겠습니다.
예제
구현 코드는 다음과 같습니다.
const str1 = 'This is an example sting';
const str2 = 'This is the second string';
const calculateScore = (str = '') => {
return str.split("").reduce((acc, val) => {
return acc + val.charCodeAt(0);
}, 0);
};
const ASCIIDifference = (str1, str2) => {
const firstScore = calculateScore(str1);
const secondScore = calculateScore(str2);
return Math.abs(firstScore - secondScore);
};
console.log(ASCIIDifference(str1, str2));코드 설명
위 코드의 동작 방식은 다음과 같습니다.
calculateScore 함수: split("")으로 문자열을 개별 문자 배열로 분리한 후, reduce() 메서드를 사용해 각 문자의 charCodeAt(0) 값(ASCII 십진수 코드)을 모두 더합니다. 초기값은 0으로 설정되어 있습니다.
ASCIIDifference 함수: 두 문자열 각각에 대해 calculateScore를 호출하여 점수를 구한 뒤, Math.abs()를 사용해 두 점수의 차이를 절댓값으로 반환합니다. 이렇게 하면 어떤 문자열이 더 큰 값을 가지더라도 항상 양수인 차이를 얻을 수 있습니다.
출력 결과
콘솔에 출력되는 결과는 다음과 같습니다.
116
즉, 두 문자열 'This is an example sting'과 'This is the second string'의 ASCII 코드 합계는 서로 116만큼 차이가 난다는 것을 확인할 수 있습니다.