반응형

 

📖 문제

 

📋 코드

#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;

vector<char> v;
string s, bomb;

int main(){

    
    cin >> s >> bomb;
    int s_size = (int)s.size();
    int bomb_size = (int)bomb.size();

    for (int i = 0; i < s_size; i++)
    {
        v.push_back(s[i]);

        if((int)v.size() >= bomb_size){
            bool flag = true;
            for (int i = 0; i < bomb_size; i++)
            {
                // 문자열폭탄인지 판별
                if(v[v.size()-bomb_size+i] != bomb[i]){
                    flag = false;
                    break;
                }
            }
            
            // 문자열 폭발
            if(flag){
                for (int i = 0; i < bomb_size; i++){
                    v.pop_back();
                }
            }
        }
    }
    
    if(v.empty()){
        cout << "FRULA";
    }else{
        for (int i = 0; i < (int)v.size(); i++){
           cout << v[i];
        }
        
    }
}

👨🏻‍💻 결과

 

 

📕 풀이 방법

v 벡터에 원소들을 넣으면서 v 벡터의 크기가 문자열 폭탄의 크기 이상일 경우 문자열을 폭발시킬 수 있는지 판단합니다. 폭발시킬 수 있다면 폭발 문자열의 길이만큼 v벡터를 pop 하고 계속해서 원소를 벡터에 넣어주면서 폭발시킬 수 있는 문자열들을 폭발시킵니다.

그리고 벡터의 크기에 따라 "FRULA" 혹은 벡터의 원소들을 출력합니다.

 

 

 

🔗 링크

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

 

9935번: 문자열 폭발

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

www.acmicpc.net

 

반응형

+ Recent posts