けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

JOI 一次予選 2024 (第 1 回) C - ハミング距離 (8Q, 難易度 2)

for 文の練習をしよう!

問題概要

長さ  N の文字列  S, T が与えられる。これらの文字列のハミング距離を求めよ。

ハミング距離とは、 S_{i} \neq T_{i} となる  i の個数のことを指す。

解法

for 文の出番です。S[i] != T[i] であるような i の個数を求めればよいでしょう。

それでは、具体的なコードについて考えます。

上図のように、答えとなる変数 res を用意して、res = 0 と初期化しておきます。そして、for 文を用いて、各 i に対して

  • S[i] != T[i] であるならば、res を 1 増やす (下のコードでは ++res としています)
  • そうでないならば、何もしない

というようにすればよいです。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N;
    string S, T;
    cin >> N >> S >> T;
    
    int res = 0;
    for (int i = 0; i < N; ++i) {
        if (S[i] != T[i]) {
            ++res;
        }
    }
    cout << res << endl;
}