AtCoder が提供しているABC(AtCoder Beginner Contest)293 のA問題をC++とPythonで解いてみました。ABC293は、2023年3月11日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Swap Odd and Even(Difficulty : 12)
問題はリンク先をご覧ください。
与えられた文字列の文字を指定されたように入れ替える問題です。AtCoder Problems による Difficulty は 12 でした。
解答案
問題を以下の方針で解きます。
- 文字列 S を読み込む。
- 文字列 S の先頭文字から2文字毎に以下を繰り返す。ループ変数は1ループで2増やす。
- S[i + 1] と S[i] を出力する。
C++ プログラム例(ABC293A)
2文字毎にループして、直接、目的とする文字を出力しました。
以下が、C++プログラムとなります。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
for (int i = 0; i < s.length(); i += 2) {
cout << s[i + 1] << s[i];
}
cout << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC293A)
Python は、文字列オブジェクトを書き換えることができません。別の文字列 t を定義して、そこに文字を足していきました。最後に文字列 t を出力しました。
"""AtCoder Beginner Contest 293 A"""
s = input()
t = ""
for i in range(0, len(s), 2):
t = t + s[i + 1] + s[i]
print(t)
こちらも「AC」と判定されました。
最後に
3回続けて文字列に関するA問題が出題されました。文字列は、競技プログラミングではよく使われるオブジェクトです。問題を解くことで慣れていきたいです。
引き続き ABC の問題を紹介していきます。