AtCoder

ABC349 C問題(Airport Code)を解く

AtCoder_ABC349_C

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

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

C問題 Airport Code(Difficulty : 219)

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

ABC349 C問題 Airport Code

貪欲法で解くことができます。AtCoder Problems による Difficulty は 219 でした。

解答案

文字列Tの何文字目まで出現しているか走査します。文字列Sを大文字に変換して、’X’ を加えておくと処理が楽になります。

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

上で述べたように文字列Sを大文字に変換して、’X’ を加えることにより、同じロジックで走査できます。文字列Sの先頭から、文字列Tが何文字まで現れるか変数 index で管理します。index が 3 に一致していれば条件を満たします。

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

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

int main()
{
	string s, t;
	cin >> s >> t;

	for (int i = 0; i < s.length(); ++i) {
		s[i] = toupper(s[i]);
	}
	s += 'X';

	int index = 0;
	for (int i = 0; i < s.length(); ++i) {
		if (s[i] == t[index]) {
			++index;
			if (index == 3) {
				break;
			}
		}
	}

	if (index == 3) {
		cout << "Yes" << endl;
	} else {
		cout << "No" << endl;
	}

	return 0;
}

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

Python プログラム例(ABC349C)

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

"""AtCoder Beginner Contest 349 C"""
s = input().upper() + 'X'
t = input()

index = 0
for ch in s:
    if ch == t[index]:
        index += 1
        if index == 3:
            break

print("Yes" if index == 3 else "No")

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

最後に

文字列Sを大文字に変換して、’X’ を加えることにより、全体をすっきりと書くことができました。

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

COMMENT

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

CAPTCHA