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

ABC-043-B バイナリハックイージー

■■■問題■■■

しぐはキーボードを製作しました。
シンプルさを極限まで追求したこのキーボードには、
'0'キー、'1'キー、バックスペースキーの3つしかキーがありません。

手始めに、しぐはこのキーボードで簡単なテキストエディタを操作してみることにしました。
このエディタには常に一つの文字列が表示されます(文字列が空のこともあります)。
エディタを起動した直後では、文字列は空です。
キーボードの各キーを押すと、文字列が次のように変化します。

●'0'キー: 文字列の右端に文字'0'が挿入される。
●'1'キー: 文字列の右端に文字'1'が挿入される。
●バックスペースキー: 文字列が空なら、何も起こらない。
                      そうでなければ、文字列の右端の1文字が削除される。

しぐはエディタを起動し、これらのキーを何回か押しました。
しぐが押したキーを順番に記録した文字列sが与えられます。
sの中の文字'0'は'0'キー、文字'1'は'1'キー、文字'B'はバックスペースキーを表します。
いま、エディタの画面にはどのような文字列が表示されているでしょうか?

■■■入力■■■

s

●1 <= |s| <= 10 (|s| はsの長さを表す)
●sは文字'0','1','B'のみからなる
●正解は空文字列ではない

■■■出力■■■

最終的にエディタに表示されている文字列を出力せよ。
(この文字列が空になるような入力は与えられない)


C#のソース

using System;
using System.Collections.Generic;

class Program
{
    static string InputPattern = "InputX";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("01B0");
            //00
            //キーが押されるたびに、
            //エディタの文字列は'0','01','0','00'と変化します。
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("0BB1");
            //1
            //キーが押されるたびに、
            //エディタの文字列は'0','(空文字列)','(空文字列)','1'
            //と変化します。
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        var CharList = new List<char>();

        foreach (char EachStr in InputList[0]) {
            if (EachStr == 'B') {
                if (CharList.Count > 0) CharList.RemoveAt(CharList.Count - 1);
            }
            else CharList.Add(EachStr);
        }
        CharList.ForEach(X => Console.Write(X));
        Console.WriteLine();
    }
}


解説

Listクラスで入力を管理してます。