トップページに戻る
次の競技プログラミングの問題へ
前の競技プログラミングの問題へ
No.418 ミンミンゼミ
■■■問題■■■
ミンミンゼミが鳴いています。あなたはセミが何回「ミーン」と鳴いたかを数えようと思いました。
セミがどのように鳴いたかをあらわす文字列Sが与えられます。
この文字列は, 以下に定義する「ミーン文字列」をいくつか繰り返した文字列で,
これが繰り返された回数を数えることでセミが「ミーン」と鳴いた回数を数えることができます。
●まず"mi"から始まる。
●その後いくつかの"-"がつく。"-"の数は0でもかまわない。
●最後に"n"で終わる。
例えば "min","mi---n"はミーン文字列であり,
"mi--nn","m--n",などはミーン文字列ではありません。
あなたの仕事は, 文字列Sがいくつのミーン文字列を繰り返しているかを数えることです。
■■■入力■■■
S
セミの鳴き声をあらわす文字列Sが入力されます。
3 <= |S| <= 100
Sはミーン文字列を繰り返したものであることが保証される。
■■■出力■■■
セミが何回「ミーン」と鳴いたかを出力してください。最後に改行してください。
C#のソース
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
static string InputPattern = "InputX";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("mi--nminminminmi-------n");
//5
//"mi--n","min","min","min","mi-------n"の
//5つの「ミーン文字列」があります
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
string S = InputList[0];
Console.WriteLine(Regex.Matches(S, "mi-*n").Count);
}
}
解説
正規表現"mi-*n"にマッチする箇所を求めてます。