Official

A - delete . Editorial by sounansya


初心者の方へ

以下の順に操作を行うと、 \(T\) が求める文字列となります。

  • \(T\) を空文字列とする。
  • \(S\) の文字を順番に見ていき、. でないなら \(T\) の末尾に連結する、という操作を繰り返す。

例えば \(S=\) a.c. なら以下のように \(T\) が生成されます:

  • \(T\) を空文字列とする。
  • \(S\)\(1\) 文字目は a なので、 \(T\) の末尾に連結する。 \(T=\) a になる。
  • \(S\)\(2\) 文字目は . なので、何もしない。 \(T=\) a のままである。
  • \(S\)\(3\) 文字目は c なので、 \(T\) の末尾に連結する。 \(T=\) ac になる。
  • \(S\)\(4\) 文字目は . なので、何もしない。 \(T=\) ac のままである。
  • 最終的に \(T=\) ac となり、これが答えとなる。

この手順をプログラムで実装した例は、以下に記載しています。

実装例(Python3)

S = input()
T = ""
for c in S:
  if c != '.':
    T += c
print(T)

実装例(C++)

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s;
    cin >> s;
    string t;
    for (char c : s) {
        if (c != '.') {
            t += c;
        }
    }
    cout << t << endl;
    return 0;
}

また、プログラミング言語によっては for 文を使わずにより簡潔に書くことができます。

実装例(Python3)

print(input().replace('.', ''))

実装例(C++)

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
    string s;
    cin >> s;
    s.erase(remove(s.begin(), s.end(), '.'), s.end());
    cout << s << endl;
    return 0;
}

posted:
last update: