競技プログラミング用 知識集積所

ABC427A - ABC → AC

最終更新:

sport_programming

- view
管理者のみ編集可


問題


必要知識


考え方

まずは入力内容を確認。
入力内容は文字列が1つなので、string型の変数を用意してcinで入力を受け取る。

1文字だけ消して出力するということだが、実は本当に削除する必要はない。
何かの操作をしたあとで、結果として真ん中の1文字だけ消えた文字列ができていればよい。

そこで、受け取った文字列を別の文字列にforループで1文字ずつ順番にコピーしながら、真ん中の文字だけコピーしないことを考える。
そうすれば、コピー先は目的の文字列になっているはずである。

ということで、if分岐で「真ん中の文字でなければ」という条件をつけてコピーする。
これは、全体が3文字なら真ん中は1文字目、5文字なら2文字目、7文字なら3文字目、と考えると、文字数を2で割った切り捨てが真ん中の位置を表すことができるとわかる。
よって、「今の文字数!=全体の文字数/2」を条件にすればよい。
コピー自体は、用意した空の文字列に「+」を使って結合していけばよい。

最後に、コピー先にできた文字列をcoutで出力しておしまい。

解答例


注意点

文字数は、0始まりなので注意。

atcoderの場合、aが0文字目、tが1文字目、などである。
真ん中は4文字目ではなく3文字目。

別解

string型の知識を使って、直接文字列を編集してもよい。
解答例
ウィキ募集バナー