トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

ARC-022-A スーパーICT高校生

■■■問題■■■

ある高校にはスーパーICT高校生が通っています。
なぜ彼がそう呼ばれているのかはその高校の生徒の誰も知りません。
手がかりはICTという文字列だけです。

けれども、ICTが何の略称なのか分かりません。
生徒たちは一晩考えぬいてICTの本来の意味であると思われる文字列を思いつきました。
しかし眠たい頭で考えたので、その文字列からいくつか文字を省いてICTになるか自信がありません。

生徒たちが考えた文字列Sが与えられるので、
それからいくつか文字を省いてICTという文字列が作れるかどうか判定してください。

■■■入力■■■

S

●1行目には、生徒たちが考えた文字列 S(1 <= |S| <= 100) が与えられる。
  ただし|S|はSの文字数のことである。
●Sは大文字、小文字アルファベットだけからなる。

■■■出力■■■

Sからいくつか文字を省いて文字列ICTが作れるならYES、作れないならNOと1行に出力せよ。
出力の末尾に改行を入れること。
なお省いてできる文字列の大文字小文字は区別しない 。


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("InformationAndCommunicationTechnology");
            //YES
            //1文字目と15文字目と28文字目以外を省けば
            //ICTが残るので出力はYESとなります。
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("InformationTechnology");
            //NO
            //どのように文字を省いてもICTは作れません。
            //ITcは作れますが順番が違うので間違いです。
            //出力はNOとなります。
        }
        else if (InputPattern == "Input3") {
            WillReturn.Add("SinCosTan");
            //YES
            //2文字目と4文字目と7文字目以外を省けばiCTが残ります。
            //大文字小文字は区別しないので出力はYESとなります。
        }
        else if (InputPattern == "Input4") {
            WillReturn.Add("Ticket");
            //YES
        }
        else if (InputPattern == "Input5") {
            WillReturn.Add("InternetTrouble");
            //NO
        }
        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.IsMatch(S, "[iI].*[cC].*[tT]") ? "YES" : "NO");
    }
}


解説

正規表現でチェックしてます。