본문 바로가기
PS(Problem Solving)/백준_BOJ

[백준] 9935번 - 문자열 폭발 (C++) 문제 및 풀이

by 초코칩프라푸치노 2022. 3. 17.

문제) 백준 - 문자열 - 문자열 폭발

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

 

9935번: 문자열 폭발

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

www.acmicpc.net

 

ans에 문자열을 더하면서 폭발 문자열의 끝과 확인하여 만약 같을 경우 폭발 문자열 전체를 확인하여 같을 경우 pop 합니다.

 

C++ 소스코드)

#include <bits/stdc++.h>
#define endl "\n"
#define ll long long
#define INF 987654321
#define MAX 3001
using namespace std;
typedef pair<int, int> p;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
string s, bomb; cin >> s >> bomb;
string ans = "";
for(int i = 0; i < s.size(); ++i){
int idx = bomb.size() - 1;
ans += s[i];
if(ans.size() < bomb.size()) continue;
int cnt = 0;
if(bomb[idx] == ans[ans.size() - 1]){
cnt = 1;
for(int j = idx - 1; j>= 0; --j){
if(bomb[j] == ans[ans.size() - (bomb.size() - j)]){
cnt++;
}
}
}
if(cnt == bomb.size())
for(int j = 0; j < bomb.size(); ++j)
ans.pop_back();
}
if(ans.size())
cout << ans;
else
cout << "FRULA";
return 0;
}
view raw 9935.cpp hosted with ❤ by GitHub

반응형

댓글