작성
·
114
0
98퍼에서 틀렸다고 뜨는데 반례를 도저히 못찾겠어서 질문 남겨봐요!
답변 1
0
안녕하세요 가인님 ㅎㅎ
저도 반례는 못찾아서 그냥 가인님 코드를 다듬어봤습니다.
이런 의미로 짠게 아닐까 싶어서요.
이렇게 해보시겠어요?
#include <bits/stdc++.h>
using namespace std;
string input, boom;
stack<char> stk;
void Check()
{
stack<char> temp;
bool matches = true;
for (int i = boom.size() - 1; i >= 0; i--) {
if (stk.empty() || stk.top() != boom[i]) {
matches = false;
break;
}
temp.push(stk.top());
stk.pop();
}
if (!matches) {
while (!temp.empty()) {
stk.push(temp.top());
temp.pop();
}
}
}
int main()
{
cin >> input >> boom;
for (char c : input)
{
stk.push(c);
if (stk.size() >= boom.size() && stk.top() == boom.back()) {
Check();
}
}
if (stk.empty()) {
cout << "FRULA";
} else {
string ret = "";
while (!stk.empty()) {
ret += stk.top();
stk.pop();
}
reverse(ret.begin(), ret.end());
cout << ret;
}
return 0;
}
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.