반응형
https://www.acmicpc.net/problem/9935
9935번: 문자열 폭발
첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모
www.acmicpc.net
- 문제
문자열이 S가 있고 폭탄문자열 bomb가 있을 때 S 안에 bomb를 모두 없애는 문제다.
- 해설
string 클래스를 stack처럼 사용하면 문제를 해결할 수 있다.
S 문자열을 하나씩 확인하다가 폭탄 문자열의 가장 마지막 문자랑 일치하는 문자가 나오면, 폭탄문자열의 길이만큼 돌아가면서 두 문자열을 비교하고, 만약 같으면 pop_back으로 날려버린다.
이후에 계속 이어가면서 나올떄마다 날려버리면서 진행하면 된다.
- 풀이
#include <iostream>
#include <string>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string s, bomb, answer = "";
int bombSize, idx = 0, cnt;
cin >> s;
cin >> bomb;
bombSize = bomb.size();
for(int i = 0; i < s.size(); i++){
answer += s[i];
if(answer[answer.size() - 1] == bomb[bombSize - 1]){
if(answer.size() >= bombSize){
cnt = 0;
for(int j = 0; j < bombSize; j++){
if(answer[answer.size() - 1 - j] == bomb[bombSize - 1 - j]){
cnt++;
}
}
if(cnt == bombSize){
for(int j = 0; j < bombSize; j++){
answer.pop_back();
}
}
}
}
}
if(answer.size() == 0){
cout << "FRULA";
}
else{
cout << answer;
}
return 0;
}
- 새롭게 알게 된 점
반응형
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준][C++] 17299: 오등큰수 (0) | 2022.12.30 |
---|---|
[백준][C++] 17298: 오큰수 (0) | 2022.12.30 |
[백준][C++] 2629: 양팔저울 (0) | 2022.12.30 |
[백준][C++] 1520: 내리막 길 (0) | 2022.12.30 |
[백준][C++] 1063: 킹 (1) | 2022.12.27 |