https://www.acmicpc.net/problem/9935
https://life318.tistory.com/68
한번 파이썬으로 해결한 문제입니다.
풀이를 생략하고 코드만 첨부합니다.
단순히 char를 저장하는 stack을 직접구현하여 pop 하는 과정에 stack pointer를 움직이고 삭제된 부분을 '\0'로 만들어 주는 과정을 통해 구현하였습니다.
#include <iostream>
#include <string>
#include <stack>
#include <cstring>
using namespace std;
string str;
string boom;
void InputData() {
cin >> str;
cin >> boom;
}
char stk[1000000+1];
int sp;
void push(char k){
stk[++sp] = k;
}
void pop(){
stk[sp] = 0;
sp--;
}
char top(){
return stk[sp];
}
int size(){
return sp;
}
bool empty(){
return sp==0;
}
void solution(){
const char* boom_ = boom.c_str();
for(int i = 0; i<str.length(); i++){
push(str[i]);
if(size() >=boom.length()){
//find if it is boom
if(strcmp(&stk[sp-boom.length()+1], boom_) == 0){
for(int i = 0; i<boom.length(); i++){
pop();
}
}
}
}
// print string
if(size()){
cout << &stk[sp-size()+1] << endl;
}
else{
cout << "FRULA" << endl;
}
}
int main(void) {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
InputData();
solution();
return 0;
}
반응형
'코딩테스트 > C++ 문제풀이' 카테고리의 다른 글
[백준] 탈출 (0) | 2022.11.23 |
---|---|
[백준] 버스 갈아타기 (0) | 2022.11.23 |
[백준] 히스토그램에서 가장 큰 직사각형 (0) | 2022.11.23 |
[백준] 택배 (0) | 2022.11.23 |
[백준] 색종이 - 3 (0) | 2022.11.23 |