AtCoder

ABC322 A問題(First ABC 2)を解く

AtCoder_ABC322_A

AtCoder が提供しているABC(AtCoder Beginner Contest)322 のA問題をC++とPythonで解いてみました。ABC322は、2023年9月30日21:00に実施されました。

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

A問題 First ABC 2(Difficulty : 12)

問題はリンク先をご覧ください。

ABC322 A問題 First ABC 2

特定の文字列を探す問題です。AtCoder Problems による Difficulty は 12 でした。

解答案

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

3文字を走査して “ABC” と一致するか確認します(13行目)。配列の添え字は0からカウントして、問題の文字数は1からカウントするため、1を加えて解答しています(14行目)。また、先頭の場所を解答するため、見つけた時点でループを抜けます(15行目)。

以下が、C++プログラムとなります。

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

int main()
{
	int n;
	cin >> n;
	string s;
	cin >> s;

	int result = -1;
	for (int i = 0; i < n - 2; ++i) {
		if ((s[i] == 'A')&&(s[i + 1] == 'B')&&(s[i + 2] == 'C')) {
			result = i + 1;
			break;
		}
	}

	cout << result << endl;

	return 0;
}

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

Python プログラム例(ABC322A)

Python 版も基本的な考え方は同じです。以下となります。

"""AtCoder Beginner Contest 322 A"""
n = int(input())
s = input()

result = -1
for i in range(n - 2):
    if s[i] == 'A' and s[i + 1] == 'B' and s[i + 2] == 'C':
        result = i + 1
        break

print(result)

3文字を取り出すためにスライス記法も使えます(7行目)。

"""AtCoder Beginner Contest 322 A"""
n = int(input())
s = input()

result = -1
for i in range(n - 2):
    if s[i:i + 3] == "ABC":
        result = i + 1
        break

print(result)

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

最後に

ABC321は、不正者が多くいたようです。今回、その影響について、以下のように運営から連絡がありました。

【お知らせ】前回のABCのレーティングの再計算がされていませんが、後日ロールバックして再計算を行います。本日のABCについてはこのまま計算を行います。

https://twitter.com/atcoder/status/1708082146135756851

再計算によって上がるか下がるかも想像できませんが、結果を待ちたいと思います。

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

COMMENT

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

CAPTCHA