안녕하세요. 오늘은 버그를 지울 거예요.

문제

https://www.acmicpc.net/problem/3447

아이디어

change(s)를 s에 있는 가장 먼저 나오는 BUG를 지우는 함수라고 합시다.
만약 없다면 s를 그대로 반환해주면 됩니다.
만약 있다면 그 BUG를 떼고 앞뒤를 붙여서 change해주면 됩니다.

소스코드

#include <iostream>
#include <string>
#define ll long long
using namespace std;

string change(string s)
{
    ll len = s.length();
    for (ll i = 0; i < len - 2; i++)
    {
        if (s.substr(i, 3) == "BUG")
            return change(s.substr(0, i) + s.substr(i + 3, len - i - 3));
    }
    return s;
}

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    string s;
    while (getline(cin, s))
        cout << change(s) << "\n";
}


감사합니다.

0개의 댓글