AtCoder

ABC339 A問題(TLD)を解く

AtCoder_ABC339_A

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

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

A問題 TLD(Difficulty : 18)

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

ABC339 A問題 TLD

与えられた文字列の部分文字列を切り出します。AtCoder Problems による Difficulty は 18 でした。

解答案

文字列に含まれる最後のピリオドから末尾までを切り出します。文字列が URL(Uniform Resource Locator)であれば TDL(Top-level domain)を切り出すことになります。

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

与えられた文字列の末尾から、ピリオドまで文字列を走査して、そこまでの文字を反転して出力しました。

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

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

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

	string result = "";
	for (int i = s.length() - 1; i >= 0; --i) {
		if (s[i] != '.') {
			result += s[i];
		} else {
			break;
		}
	}
	reverse(result.begin(), result.end());

	cout << result << endl;

	return 0;
}

与えられた文字列を先頭から走査して、最後のピリオド以降の文字を出力するプログラムも紹介します。以下となります。

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

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

	int last_index = -1;
	for (int i = 0; i < s.length(); ++i) {
		if (s[i] == '.') {
			last_index = i;
		}
	}

	cout << s.substr(last_index + 1) << endl;

	return 0;
}

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

Python プログラム例(ABC339A)

Python 版も基本的な考え方は同じです。末尾から走査するプログラムは以下となります。

"""AtCoder Beginner Contest 339 A"""
s = input()

result = ""
for i in range(len(s) - 1, -1, -1):
    if s[i] != '.':
        result = s[i] + result
    else:
        break

print(result)

先頭から走査するプログラムは以下となります。

"""AtCoder Beginner Contest 339 A"""
s = input()

last_index = -1
for i, ch in enumerate(s):
    if ch == '.':
        last_index = i

print(s[last_index + 1:])

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

最後に

2回参加できなかったため、久しぶりの参加でした。レートは落ちましたが、変わらず楽しんでいます。

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

COMMENT

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

CAPTCHA