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

자바스크립트로 두 문자열의 해밍 거리(Hamming Distance) 계산하기

해밍 거리(Hamming Distance)란?

해밍 거리는 길이가 같은 두 문자열에서 서로 다른 문자가 나타나는 위치의 개수를 의미합니다.

다르게 표현하면, 한 문자열을 다른 문자열로 변환하기 위해 필요한 최소한의 변경(치환) 횟수라고 할 수 있습니다. 해밍 거리는 일반적으로 길이가 동일한 문자열에 대해서만 측정됩니다.

구현 목표

이번 글에서는 길이가 같은 두 문자열 str1과 str2를 인자로 받아, 두 문자열 사이의 해밍 거리를 계산하여 반환하는 자바스크립트 함수를 작성해 보겠습니다.

동작 방식

함수의 로직은 매우 간단합니다.

  1. 먼저 두 문자열의 길이가 같은지 확인합니다.
  2. 같다면 반복문으로 각 위치의 문자를 하나씩 비교합니다.
  3. 대소문자 차이로 인한 오탐을 방지하기 위해 toLowerCase()로 소문자로 통일한 뒤 비교합니다.
  4. 두 문자가 다르면 카운터(distance)를 1씩 증가시킵니다.
  5. 최종적으로 카운터 값을 반환하고, 길이가 다르면 0을 반환합니다.

예제 코드

const str1 = 'Hello World';
const str2 = 'Heeyy World';

const findHammingDistance = (str1 = '', str2 = '') => {
  let distance = 0;
  if (str1.length === str2.length) {
    for (let i = 0; i < str1.length; i++) {
      if (str1[i].toLowerCase() !== str2[i].toLowerCase()) {
        distance++;
      }
    }
    return distance;
  }
  return 0;
};

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

실행 결과

위 코드를 실행하면 콘솔에 아래와 같은 결과가 출력됩니다.

3

결과 분석

'Hello World'와 'Heeyy World'를 비교해 보면, 세 번째 위치(l → e), 네 번째 위치(l → y), 다섯 번째 위치(o → y)에서 문자가 서로 다릅니다. 따라서 해밍 거리는 3이 됩니다.

이처럼 해밍 거리는 오류 검출·정정 코드, DNA 서열 비교 등 다양한 분야에서 활용되는 기본적인 개념이며, 위와 같은 간단한 반복문만으로도 손쉽게 구현할 수 있습니다.