AtCoder が提供しているABC(AtCoder Beginner Contest)394 B問題をC++とPythonで解いてみました。ABC394は、2025年2月22日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
B問題 cat(Difficulty : 30)
問題の詳細は、リンク先をご覧ください。
文字列の長さと文字列を組にしてソートしました。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 の問題を紹介していきます。