AtCoder が提供しているABC(AtCoder Beginner Contest)289 のA問題をC++とPythonで解いてみました。ABC289は、2023年2月11日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 flip(Difficulty : 14)
問題はリンク先をご覧ください。
文字列の文字を置き換えます。AtCoder Problems による Difficulty は 14 でした。
解答案
与えられた文字列の文字を置き換える問題です。
C++ プログラム例(ABC289A)
文字列を走査して、1文字づつ書き換えます。問題の制約により、文字列は ‘0’ か ‘1’ しかないため、’0′ なら ‘1’ に置き換えて、それ以外なら ‘0’ に置き換えます。
以下が、C++プログラムとなります。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
for (int i = 0; i < s.length(); ++i) {
if (s[i] == '0') {
cout << '1';
} else {
cout << '0';
}
}
cout << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC289A)
最初に C++ 版と同じように文字列を走査して、文字を置き換えます。Python は、文字列の文字を変更できないため、別の文字列変数 result に解答となる文字を追加します。
"""AtCoder Beginner Contest 289 A"""
s = input()
result = ""
for _, ch in enumerate(s):
if ch == '0':
result += '1'
else:
result += '0'
print(result)
文字列を置き換えるメソッドを使う別プログラムも紹介します。replace メソッドは、文字を置き換えた文字列を返します。メソッドで文字列を書き換えることができないことに注意してください(s.replace() は、s 自体を書き換えない)。
1 を 0 に置き換えると、すべて 0 の文字列になるため、一度別の文字 ‘X’ に置き換えます。以下が、replace メソッドを使ったプログラムになります。
"""AtCoder Beginner Contest 289 A"""
print(input().replace('1', 'X').replace('0', '1').replace('X', '0'))
どちらも「AC」と判定されました。
最後に
ABC289は、直接参加できませんでした。バーチャルコンテストの形式で参加しました。D問題まで解くことができました。
引き続き ABC の問題を紹介していきます。