AtCoder が提供しているABC(AtCoder Beginner Contest)382 B問題をC++とPythonで解いてみました。ABC382は、2024年11月30日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
B問題 Daily Cookie 2(Difficulty : 24)
問題の詳細は、リンク先をご覧ください。
文字列の後ろから処理します。AtCoder Problems による Difficulty は 24 でした。
解答案
C++ プログラム例(ABC382B)
文字列の後ろから $D$ 個のクッキー(文字 ‘@’)を空き箱(文字 ‘.’)に変更します。変更後の文字列を出力します。
以下が、C++プログラムです。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, d;
cin >> n >> d;
string s;
cin >> s;
for (int i = n - 1; i >= 0; --i) {
if (s[i] == '@') {
s[i] = '.';
--d;
if (d == 0) {
break;
}
}
}
cout << s << endl;
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC382B)
基本的な考え方は同じです。Python では文字列を直接変更できないため、リストとして扱い、join
メソッドを使用します(3、12行目)。以下がプログラムです。
"""AtCoder Beginner Contest 382 B"""
n, d = map(int, input().split())
s = list(input())
for i in range(n - 1, -1, -1):
if s[i] == '@':
s[i] = '.'
d -= 1
if d == 0:
break
print("".join(s))
こちらも「AC」と判定されました。
最後に
この問題は、A問題と似た設定の問題でした。
引き続き ABC の問題を紹介していきます。