AtCoder ABC 382 B - Daily Cookie 2 (7Q, 灰色, 200 点) - けんちょんの競プロ精進記録

けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 382 B - Daily Cookie 2 (7Q, 灰色, 200 点)

近年の B 問題では最も簡単かもしれない。

問題概要

文字 .@ からなる長さ  N の文字列  S が与えられる。後ろから順に  D 個の @. に変えたものを出力せよ。

考えたこと

for 文を用いて、添字を  i = N-1, N-2, \dots, 0 という降順に回していき、

  • S[i] == '@' のとき
    •  D \gt 0 のとき:S[i] を '.' に書き換えて、 D を 1 減らす
    •  D = 0 のとき:何もしない
  • 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;
}