[BOJ] 9935 - 문자열 폭발 (C++)

마이구미·2022년 1월 31일
0

PS

목록 보기
27/69

문제

문자열 폭발

코드

#include <iostream>

using namespace std;

string input, bomb;

int main(void){
    cin >> input >> bomb;
    
    string answer = "";

    for (int i = 0; i < input.size(); i++){
        answer += input[i];
        if (answer[answer.size()-1] == bomb[bomb.size()-1]){
            int cnt = 1;
            
            for (int j = 0; j < bomb.size()-1; j++){
                if (answer[answer.size()-2-j] == bomb[bomb.size()-2-j]) cnt++;
                else break;
            }

            if (cnt == bomb.size()){
                for(int b = 0; b < bomb.length(); b++){
        	    answer.pop_back();
                }
            }
        }
    }
    answer.size() > 0 ? cout << answer : cout << "FRULA";
    return 0;
}

접근

문자열을 첫 원소부터 살펴보면서 answer라는 정답 문자열에 추가한다. 이때 스택처럼 폭탄의 맨 뒤와 answer의 맨 뒤를 비교하면서 같을 경우 answer의 맨 뒤가 폭탄인지 확인한다. 폭탄일 경우 answer에서 pop 해주면 된다. 이때 간단하게 하려고 substr을 사용했는데 이러면 시간초과가 뜬다.

profile
마이구미 마시쪙

0개의 댓글