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

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

JOI 一次予選 2024 (第 3 回) C - 揃った文字 (7Q, 難易度 2)

とても教育的な典型問題!

問題概要

長さ  N の英小文字からなる文字列  S が与えられる。

この文字列がすべて同じ文字で構成されているかどうかを判定せよ。

制約

  •  2 \le N \le 100

考えたこと

すべてが同じ文字だということは、「すべてが先頭の文字と同じ文字である」ということである。よって、次のことを判定すればよい。

  • S[1] == S[0] かどうか
  • S[2] == S[0] かどうか
  • S[3] == S[0] かどうか
  • ...
  • S[N-1] == S[0] かどうか

この判定は for 文でできる。

コード

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

int main() {
    int N;
    string S;
    cin >> N >> S;
    bool res = true;
    for (int i = 1; i < N; ++i) {
        if (S[i] != S[0]) res = false;
    }
    if (res) cout << "Yes" << endl;
    else cout << "No" << endl;
}