오늘의 알고리즘

[C++] 백준 9935 문자열 폭발

하늘하늘 . 2022. 6. 22. 17:04
#include <iostream>
#include <algorithm>
#include <string.h>
 
int main()
{
	std::string s = {};
	std::string bomb = {};
    std::string sAns = {};
 
	std::cin >> s;
	std::cin >> bomb;
 
    for (int i = 0; i < s.size(); ++i)
    {
        sAns += s[i];
 
        if (sAns[sAns.size() - 1] == bomb[bomb.size() - 1] && sAns.size() >= bomb.size())
        {
            for (int j = bomb.size() - 1; j >= 0; --j)
            {
                if (sAns[sAns.size() - (bomb.size() - j - 1) - 1] != bomb[j])
                    break;
 
                else if (j == 0)
                {
                    for (int z = 0; z < bomb.size(); ++z)
                    {
                        sAns.pop_back();
                    }
                }
            }
        }
    }
 
	if (!sAns.empty())
		std::cout << sAns;
 
	else
		std::cout << "FRULA";
 
	return 0;
}

처음에는 중간 문자열을 erase했는데 시간초과 

입력을 해서 맨 마지막 문자가 같다면 전부 체크 후에 pop_back으로 바꿨다.