AtCoder

ABC329 A問題(Spread)を解く

AtCoder_ABC329_A

AtCoder が提供しているABC(AtCoder Beginner Contest)329 のA問題をC++とPythonで解いてみました。ABC329は、2023年11月18日21:00に実施されました。

AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。

A問題 Spread(Difficulty : 9)

問題はリンク先をご覧ください。

ABC329 A問題 Spread

与えられた文字列の文字を空白区切りで出力します。AtCoder Problems による Difficulty は 9 でした。

解答案

C++ プログラム例(ABC329A)

文字の間に空白を入れて、出力する文字列 result を作ります。以下が、C++プログラムとなります。

#include <bits/stdc++.h>
using namespace std;

int main()
{
	string s;
	cin >> s;

	string result = "";
	for (int i = 0; i < s.length(); ++i) {
		if (i > 0) {
			result += " ";
		}
		result += s[i];
	}
	cout << result << endl;

	return 0;
}

少し技巧的ですが、10行目のように書くことができます。配列の添え字は、i と s.length() – 1 が異なれば0となり ‘ ‘ となります。逆に一致すれば添え字は、1となり改行コード ‘\n’ となります。私は、競技プログラムでは、この方法で書いています。

#include <bits/stdc++.h>
using namespace std;

int main()
{
	string s;
	cin >> s;

	for (int i = 0; i < s.length(); ++i) {
		cout << s[i] << " \n"[i == s.length() - 1];
	}

	return 0;
}

どちらも AC(Accepted=正しいプログラム)と判定されました。

Python プログラム例(ABC329A)

文字の間に空白を入れて、出力する文字列 result を作りました。C++ と同じです。以下となります。

"""AtCoder Beginner Contest 329 A"""
s = input()

result = ""
for i, ch in enumerate(s):
    if i > 0:
        result += " "
    result += ch
print(result)

Python では、以下の1行で書くことができます。リストに ‘*’ を付けると個々の要素を引数として渡せるようです。

"""AtCoder Beginner Contest 329 A"""
print(*input())

こちらも「AC」と判定されました。

最後に

コンテストABC329は、A問題からD問題とそれ以降の問題の難易度差が大きくなりました。このような場合、わたしの実力では最初の4問を解く速さが重要になるようです。

引き続き ABC の問題を紹介していきます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA