개요
JavaScript에서 두 문자열을 받아 같은 위치에 있는 문자들끼리 서로 다른 개수(차이점)를 계산하는 함수를 작성해야 하는 경우가 있습니다. 위치가 대응되는 두 문자가 서로 같지 않다면, 그 지점은 하나의 차이점으로 간주됩니다.
예를 들어 첫 번째 문자열의 5번째 글자와 두 번째 문자열의 5번째 글자가 다르다면, 이는 하나의 불일치로 카운트됩니다.
문자열 예시
다음과 같은 두 개의 문자열이 있다고 가정해 보겠습니다.
const str1 = 'Hello world!!!';
const str2 = 'Hellp world111';
이 두 문자열을 한 글자씩 비교하면 다음과 같습니다.
- 5번째 문자:
'o'와'p'→ 불일치 - 12번째 문자:
'!'와'1'→ 불일치 - 13번째 문자:
'!'와'1'→ 불일치 - 14번째 문자:
'!'와'1'→ 불일치
따라서 총 차이점 개수는 4개입니다.
구현 코드
이 문제를 해결하는 코드는 다음과 같습니다.
const str1 = 'Hello world!!!';
const str2 = 'Hellp world111';
const dissimilarity = (str1 = '', str2 = '') => {
let count = 0;
for(let i = 0; i < str1.length; i++){
if(str1[i] === str2[i]){
continue;
};
count++;
};
return count;
};
console.log(dissimilarity(str1, str2));
코드 동작 원리
- 차이점을 저장할 변수
count를 0으로 초기화합니다. for반복문으로 첫 번째 문자열의 길이만큼 순회하면서 각 인덱스의 문자를 비교합니다.- 두 문자가 같으면
continue로 건너뛰고, 다르면count를 1 증가시킵니다. - 반복이 끝나면 최종
count값을 반환합니다.
실행 결과
콘솔에 출력되는 결과는 다음과 같습니다.
4
참고 사항
이 구현은 첫 번째 문자열의 길이를 기준으로 순회하므로, 두 문자열의 길이가 다른 경우 짧은 문자열 범위까지만 비교됩니다. 만약 길이 차이까지 차이점으로 포함하고 싶다면, 두 문자열 중 더 긴 길이만큼 순회하거나 길이 차이를 결과에 더해주면 됩니다.