AtCoder が提供しているABC(AtCoder Beginner Contest)275 のA問題をC++とPythonで解いてみました。ABC275は、2022年10月29日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Find Takahashi(Difficulty : 14)
問題はリンク先をご覧ください。
最大値を持つ数字のインデックスを求める問題です。AtCoder Problems による Difficulty は、14 でした。
解答案
問題を解く方針を書きだします。
- 最大値の仮の値と、最大値があるインデックスの仮の値を用意する。
- 整数の列を読み込み、より大きな値であれば、最大値と最大値のインデックスを更新する。
- 最後に、最大値があるインデックスを出力する。
C++ プログラム例(ABC275A)
書きだした方針をプログラムするだけです。以下が、解答例です。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int max_h = 0;
int max_no = -1;
for (int i = 0; i < n; ++i) {
int h;
cin >> h;
if (h > max_h) {
max_h = h;
max_no = i + 1;
}
}
cout << max_no << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC275A)
Python では、配列を一気に読みます。素朴な書き方をしたため、Python らしい書き方になっていないかもしれません。
"""AtCoder Beginner Contest 275 A"""
n = int(input())
h = list(map(int, input().split()))
max_h = 0
max_no = -1
for i in range(n):
if h[i] > max_h:
max_h = h[i]
max_no = i + 1
print(max_no)
こちらも「AC」と判定されました。
最後に
A問題も、手早く解くことによってレートは上がっていくようです。また、まだ Python に慣れていないわたしには、ちょうどよい演習になっています
引き続き ABC の問題を紹介していきます。