近年の B 問題では最も簡単かもしれない。
問題概要
文字 .
、@
からなる長さ の文字列 が与えられる。後ろから順に 個の @
を .
に変えたものを出力せよ。
考えたこと
for
文を用いて、添字を という降順に回していき、
S[i] == '@'
のとき- のとき:
S[i]
を '.' に書き換えて、 を 1 減らす - のとき:何もしない
- のとき:
S[i] == '.'
のとき:何もしない
というようにすればよいでしょう。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, D; string S; cin >> N >> D >> S; for (int i = N-1; i >= 0; i--) { if (S[i] == '@' && D > 0) { S[i] = '.'; D--; } } cout << S << endl; }