AtCoder が提供しているABC(AtCoder Beginner Contest)319 のA問題をC++とPythonで解いてみました。ABC319は、2023年9月9日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Legendary Players(Difficulty : 10)
問題はリンク先をご覧ください。
マップ(辞書)を使って解きました。AtCoder Problems による Difficulty は 10 でした。
解答案
C++ プログラム例(ABC319A)
与えられたプレイヤーのハンドルネームをキー、レーティングをバリューとするマップを定義しました(6ー16行目)。このマップ定義は、問題文から手で書き換えましたが、もう少し定義が多ければ、プログラムでコード生成したと思います。
文字列を読み込んで、対応するバリューを表示します(20行目)。以下が、C++プログラムとなります。
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<string , int> m;
m["tourist"] = 3858;
m["ksun48"] = 3679;
m["Benq"] = 3658;
m["Um_nik"] = 3648;
m["apiad"] = 3638;
m["Stonefeang"] = 3630;
m["ecnerwala"] = 3613;
m["mnbvmar"] = 3555;
m["newbiedmy"] = 3516;
m["semiexp"] = 3481;
string s;
cin >> s;
cout << m[s] << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC319A)
Python では辞書を使いました。基本的な考え方は同じです。以下となります。
"""AtCoder Beginner Contest 319 A"""
m = {
"tourist": 3858,
"ksun48": 3679,
"Benq": 3658,
"Um_nik": 3648,
"apiad": 3638,
"Stonefeang": 3630,
"ecnerwala": 3613,
"mnbvmar": 3555,
"newbiedmy": 3516,
"semiexp": 3481
}
s = input()
print(m[s])
こちらも「AC」と判定されました。
最後に
ABC319は、7問で行われました。AtCoderからは以下の告知がありました。
※今まで ABC で出題予定の高難度の問題がたまっていたため 8 問制にしていましたが、在庫が消化できてきたため今回から 7 問制となります。 F 問題までの難易度は今までと同等となる予定です。G 問題の難易度は幅広く、今までの簡単な G 問題に対応するときから今までの難しい Ex 問題に対応するときもあります。詳しくは各回の配点をご確認ください。
https://atcoder.jp/posts/1100
わたしは、F問題以降は実力的に取り組めていないため、影響はありませんでしたが、高レートでABCに参加される方には、影響があるかもしれません。
引き続き ABC の問題を紹介していきます。