© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 3449 - 해밍 거리

2024-08-02
BOJ
브론즈 III
cpp
원본 문제 보기
문자열

문제

BOJ 3449 - 해밍 거리

같은 길이의 두 이진 문자열에서 서로 다른 비트의 개수(해밍 거리)를 구하라.

입력

첫째 줄에 테스트 케이스 수 T, 이후 두 줄씩 이진 문자열 쌍이 주어진다.

출력

각 테스트 케이스마다 "Hamming distance is X."를 출력한다.

예제

입력출력
1 0 1Hamming distance is 1.

풀이

두 문자열을 같은 인덱스에서 비교하여 다른 문자의 수를 센다.

  1. 두 문자열을 입력받는다
  2. 같은 인덱스의 문자를 비교하여 다른 경우 카운트를 증가시킨다
  3. 결과를 지정된 형식으로 출력한다

핵심 아이디어: 해밍 거리는 같은 위치에서 다른 비트의 수이므로, 단순 문자 비교로 O(L)에 구할 수 있다.

코드

#include <iostream>
using namespace std;
 
int main()
{
  string num1;
  string num2;
  int t;
  cin >> t;
 
  for (int i = 0; i < t; i++)
  {
    cin >> num1 >> num2;
    int cnt = 0;
    for (int j = 0; j < num1.length(); j++)
    {
      if (num1[j] != num2[j])
        cnt++;
    }
    cout << "Hamming distance is " << cnt << "." << endl;
  }
}

복잡도

  • 시간: O(T * L) (L: 문자열 길이)
  • 공간: O(L)