728x90
[ 1차 시도 ]
- 스택에 담아서 끝에서 부터 검사하려고 했다.
- 이렇게 그렇게 하면 문장이 끝까지 일치하지 않으면 다시 처음부터 검사를 해야하는데
스택을 이용하면 처음부터 다시 검사를 할 수 없다는 것을 알게됨.
- 다른 방법을 모색하다 그냥 Array를 사용하면 될것 같다고 생각함.
[ 2차 시도 ]
- Vector를 이용해서 재도전
- 반복문을 통해 2개의 조건문을 동시에 해결하려다 out of range가 계속 떠서 그냥 차례대로 하기로함.
[ 원리 ]
1. 해결할 문자열과 Boom 문자열을 string 으로 입력받는다.
2. Boom의 길이만큼 벡터에 해결할 문자열을 vector에 push_back한다.
3. Boom의 길이 == vector의 size 이면, vector == Boom 인지 검사한다.
4. 만약 vector와 Boom의 문자열이 다르면, +1한 vector의 문자부터 검사.
5. 위 과정을 반복
더보기
#include <iostream>
#include <stack>
#include <queue>
#include <vector>
using namespace std;
int main()
{
string str;
string key;
vector<char> v;
bool chk = false;
cin >> str;
cin >> key;
int str_len = str.length();
int key_len = key.length();
for (int i=0; i < str_len; i++) {
v.push_back(str[i]);
if (v.size() >= key_len) {
chk = false;
for (int j = 0; j < key_len; j++) {
if (key[j] != v[v.size() - key_len + j])
chk = true;
}
if (!chk) {
for (int j = 0; j < key_len; j++) {
v.pop_back();
}
}
}
}
if (v.empty()) {
cout << "FRULA";
return 0;
}
for (int i = 0; i < v.size(); i++) {
cout << v[i];
}
}
728x90
'📊알고리즘 > BOJ' 카테고리의 다른 글
BOJ 3015] 오아시스 재결합 (0) | 2022.12.21 |
---|---|
BOJ 1662] 압축 (1) | 2022.12.20 |
BOJ 2504] 괄호의 값 (0) | 2022.12.19 |
BOJ 17299] 오등큰수 (0) | 2022.12.15 |
BOJ 17298] 오큰수 (0) | 2022.12.15 |