AtCoder

ABC394 B問題(cat)を解く

AtCoder_ABC394_B

AtCoder が提供しているABC(AtCoder Beginner Contest)394 B問題をC++とPythonで解いてみました。ABC394は、2025年2月22日21:00に実施されました。

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

B問題 cat(Difficulty : 30)

問題の詳細は、リンク先をご覧ください。

ABC394 B問題 cat

文字列の長さと文字列を組にしてソートしました。AtCoder Problems による Difficulty は 30 でした。

解答案

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

文字列の長さと文字列を組にしました。ソート関数は、最初の要素から比較していきます。そのため、ソート結果は文字列の長さが短い順になります。これを連結して解として出力します。

以下が、C++プログラムです。

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

int main()
{
	int n;
	cin >> n;
	vector<pair<int, string>> s(n);
	for (int i = 0; i < n; ++i) {
		string t;
		cin >> t;
		s[i] = make_pair(t.length(), t);
	}
	sort(s.begin(), s.end());

	string result = "";
	for (int i = 0; i < n; ++i) {
		result += s[i].second;
	}

	cout << result << endl;

	return 0;
}

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

Python プログラム例(ABC394B)

Python版も基本的な考え方は同じです。以下がプログラムです。

"""AtCoder Beginner Contest 394 B"""
n = int(input())
s = [(0, "")] * n
for i in range(n):
    t = input()
    s[i] = (len(t), t)
s.sort()

result = ""
for i in range(n):
    result += s[i][1]

print(result)

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

最後に

公式解説では、sort の比較関数を指定して処理していました。実装としては、組で処理した方が分かりやすいと考えて、記事にしました。

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

COMMENT

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

CAPTCHA