Game Develop

[Algorithm]Baekjoon 9935번 :: 문자열 폭발 본문

Algorithm/Baekjoon

[Algorithm]Baekjoon 9935번 :: 문자열 폭발

MaxLevel 2022. 12. 15. 00:46

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

 

9935번: 문자열 폭발

첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
 
    string s;
    string b;
 
    cin >> s >> b;
 
    string result = "";
 
    for (int i = 0; i < s.size(); i++)
    {
        result += s[i];
        
        int count = 0;
        int checkIndex = 1;
 
        for (int j = b.size() - 1; j >= 0; j--)
        {
            if (result[result.size() - checkIndex] == b[j])
            {
                count++;
                checkIndex++;
            }
            else break;
        }
 
        if (count == b.size())
        {
            for (int i = 0; i < count; i++)
            {
                result.pop_back();
            }
        }
    }
 
    if (!result.empty())
    {
        cout << result;
    }
    else
    {
        cout << "FRULA";
    }
}
cs

 

빈문자열에 s를 하나씩 집어넣다가, 집어넣은게 폭발문자열의 끝문자랑 같으면 거기서부터 앞으로 하나씩 검사한다.

폭발문자열로 판명나면 그만큼 pop해준다음, 반복하면 끝.