公式

A - Hell, World! 解説 by sounansya


AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題 A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。


この問題は文字列 HelloWorld\(X\) 文字目を削除することで解くことができます。

文字列の \(X\) 文字目を削除する方法は色々ありますが、for 文と if 文を使うと以下のように作ることができます:

  • \(S=\) HelloWorld\(T\) を空文字列とする。
  • \(i=1,2,\ldots,10\) の順に以下を行う:
    • \(i\neq X\) ならば \(T\) の末尾に \(S_i\) を連結する。
  • \(T\) が求める答えである。

このように \(T\) を作っていくと、\(S\)\(X\) 文字目だけ飛ばされるので結果として HelloWorld\(X\) 文字目のみを削除した文字列が得られます。

他にも、例えば C++ であれば文字列 \(S\) に対し S.erase(S.begin() + x) とすることで \(S\)\(x\) 文字目(ただし 0-indexed)を削除することができ、そのような方法を使っても正解を得ることができます。

実装例(Python3)

x = int(input()) - 1
s = "HelloWorld"
t = ""
for i in range(10):
    if i != x:
        t += s[i]
print(t)

実装例(C++)

#include <bits/stdc++.h>
using namespace std;
int main() {
	int x;
	cin >> x;
	x--;
	string s = "HelloWorld";
	s.erase(s.begin() + x);
	cout << s << endl;
	return 0;
}

投稿日時:
最終更新: