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

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

AtCoder ABC 375 A - Seats (7Q, 灰色, 100 点)

文字列を for 文で調べる系の問題

問題概要

文字 #, . からなる長さ  N の文字列  S が与えられる。次の条件を満たす整数  i の個数を求めよ。

  •  S_{i} = #
  •  S_{i+1} = .
  •  S_{i+2} = #

考えたこと

次のように考えると実装しやすい。

 i に対して、文字列  S i 文字目から 3 文字文をとってできる文字列(C++ なら S.substr(i, 3))が "#.#" となるような  i を数える。

コード

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

int main() {
    int N, res = 0;
    string S;
    cin >> N >> S;
    for (int i = 0; i + 2 < N; i++) {
        if (S.substr(i, 3) == "#.#") res++;
    }
    cout << res << endl;
}