이번 글에서는 두 개의 문자열과 하나의 숫자 n을 인자로 받는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.
이 함수의 역할은 두 문자열을 서로 비교하여 동일한 문자들을 포함하고 있는지 확인하는 것입니다. 구체적으로 다음 조건 중 하나라도 만족하면 true를 반환합니다.
- 두 문자열이 문자의 순서와 관계없이 완전히 동일한 문자들로 구성된 경우
- 두 문자열 사이에 서로 다른 문자가 최대 n개 이하인 경우
위 조건을 만족하지 못하면 함수는 false를 반환해야 합니다.
예제 코드
다음은 해당 기능을 구현한 코드입니다 −
const str = 'some random text';
const str2 = 'some r@ndom text';
const deviationMatching = (first, second, num) => {
let count = 0;
for(let i = 0; i < first.length; i++){
if(!second.includes(first[i])){
count++;
};
if(count > num){
return false;
};
};
return true;
};
console.log(deviationMatching(str, str2, 1));
코드 동작 원리
코드가 어떻게 작동하는지 단계별로 살펴보겠습니다.
먼저 count 변수를 0으로 초기화하여 두 문자열 간의 불일치 횟수를 추적합니다. 그다음 첫 번째 문자열의 각 문자를 순회하면서, 해당 문자가 두 번째 문자열에 포함되어 있는지 includes() 메서드로 확인합니다. 포함되어 있지 않다면 count를 1 증가시킵니다.
순회 도중 count가 허용치 num을 초과하면 즉시 false를 반환하여 불필요한 연산을 줄입니다. 모든 문자를 확인한 후에도 count가 num 이하라면 true를 반환합니다.
출력 결과
위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다 −
true
'some random text'와 'some r@ndom text'는 '@' 문자 하나만 다르기 때문에, 허용 오차가 1일 때 true가 반환됩니다. 만약 num을 0으로 전달하면 두 문자열이 완전히 동일한 문자 집합을 가져야만 true가 나오게 됩니다.