AtCoder

ABC298 A問題(Job Interview)を解く

AtCoder_ABC298_A

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

この回は、外部からDDoS攻撃を受けてサーバが不安定になり unrated となりました。

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

A問題 Job Interview

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

ABC298 A問題 Job Interview

与えられた文字列が条件を満たすか確認する問題です。AtCoder Problems による Difficulty は算出されていません。A問題としては通常の難易度だと思います。

解答案

N と文字列 S を読み込み、以下の条件を満たしているか判断します。

  • 文字列に ‘x’ が一つでも含まれていれば、”No” と出力する。
  • 文字列が ‘o’ を一つも含まなければ、”No” と出力する。
  • それ以外の場合は、”Yes” と出力する。

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

変数 result を false に初期化します(11行目)。文字列にひとつでも ‘o’ があれば、result を true にします(13、14行目)。ひとつでも ‘x’ があれば、result を false にして、ループを break します(16-18行目)。

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

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

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

	bool result = false;
	for (int i = 0; i < n; ++i) {
		if (s[i] == 'o') {
			result = true;
		}
		if (s[i] == 'x') {
			result = false;
			break;
		}
	}

	if (result) {
		cout << "Yes" << endl;
	} else {
		cout << "No" << endl;
	}

	return 0;
}

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

Python プログラム例(ABC298A)

C++のロジックをそのまま Python に書き直しました。

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

result = False
for i, ch in enumerate(s):
    if ch == 'o':
        result = True
    if ch == 'x':
        result = False
        break

print("Yes" if result else "No")

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

最後に

ABC298 は、unrated となりました。今回、3問しか解けず苦戦しているため、レートとしては、得したと思います。

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

COMMENT

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

CAPTCHA