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

JavaScript로 두 문자열의 해밍 거리(Hamming Distance) 구하는 방법

해밍 거리란 무엇인가?

해밍 거리(Hamming Distance)는 길이가 같은 두 문자열에서 서로 다른 기호가 위치한 자리의 개수를 의미합니다. 즉, 같은 위치에 있는 문자들을 하나씩 비교했을 때 일치하지 않는 횟수를 세면 됩니다.

예를 들어 다음과 같은 두 문자열이 있다고 가정해 보겠습니다.

const str1 = 'delhi';
const str2 = 'delph';

이 두 문자열의 해밍 거리는 2입니다. 네 번째 문자('h'와 'p')와 다섯 번째 문자('i'와 'h')가 서로 다르기 때문입니다. 참고로 해밍 거리를 계산하려면 반드시 두 문자열의 길이가 같아야 한다는 전제 조건이 필요합니다.

따라서 우리는 두 개의 문자열(예: str1과 str2)을 인자로 받아 두 문자열 사이의 해밍 거리를 반환하는 JavaScript 함수를 작성해야 합니다.

구현 코드 예제

다음은 해밍 거리를 계산하는 함수의 전체 코드입니다.

const str1 = 'delhi';
const str2 = 'delph';

const hammingDistance = (str1 = '', str2 = '') => {
   // 길이가 다르면 해밍 거리를 정의할 수 없으므로 0 반환
   if (str1.length !== str2.length) {
      return 0;
   }
   let dist = 0;
   // 같은 위치의 문자를 순서대로 비교
   for (let i = 0; i < str1.length; i += 1) {
      if (str1[i] !== str2[i]) {
         dist += 1;
      }
   }
   return dist;
};

console.log(hammingDistance(str1, str2));

코드 동작 원리

함수의 로직을 단계별로 살펴보면 다음과 같습니다.

1단계: 먼저 두 문자열의 길이를 비교합니다. 길이가 다르면 해밍 거리를 계산할 수 없으므로 0을 반환합니다.

2단계: 차이를 저장할 변수 dist를 0으로 초기화한 뒤, for 반복문으로 각 인덱스의 문자를 하나씩 비교합니다.

3단계: 문자가 서로 다를 때마다 dist 값을 1씩 증가시키고, 반복이 끝나면 최종 결과를 반환합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같은 출력이 나타납니다.

2

'delhi'와 'delph'는 네 번째, 다섯 번째 문자에서만 차이가 나므로 해밍 거리인 2가 정상적으로 출력됩니다. 이 알고리즘은 시간 복잡도 O(n)으로 문자열을 한 번만 순회하므로 매우 효율적이며, 오류 검출 코드나 유전자 서열 비교 등 다양한 분야에서 활용됩니다.