AtCoder が提供しているABC(AtCoder Beginner Contest)354 B問題をC++とPythonで解いてみました。ABC354は、2024年5月18日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
B問題 AtCoder Janken 2(Difficulty : 54)
問題の詳細は、リンク先をご覧ください。
ソートした名前とレートの合計から勝者を求めます。AtCoder Problems による Difficulty は 54 でした。
解答案
C++ プログラム例(ABC354B)
名前とレートを読み込み、レートの合計を求めます。次に名前をソートし、レートの合計をユーザの人数で割った余りから勝者を求めます(17行目)。
以下が、C++プログラムです。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
vector<string> name(n);
int sum = 0;
for (int i = 0; i < n; ++i) {
int rate;
cin >> name[i] >> rate;
sum += rate;
}
sort(name.begin(), name.end());
cout << name[sum % n] << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC354A)
Python版も基本的な考え方は同じです。以下がプログラムです。
"""AtCoder Beginner Contest 354 B"""
n = int(input())
name = [""] * n
s = 0
for i in range(n):
name[i], rate = input().split()
s += int(rate)
name.sort()
print(name[s % n])
こちらも「AC」と判定されました。
最後に
文字列の配列のソートができれば、取り組みやすい問題でした。
引き続き ABC の問題を紹介していきます。