๋ฌธ์์ด ํญ๋ฐ ์ฑ๊ณต๋ค๊ตญ์ด
2 ์ด (์ถ๊ฐ ์๊ฐ ์์) 128 MB 46967 11304 7873 24.127% ๋ฌธ์
์๊ทผ์ด๋ ๋ฌธ์์ด์ ํญ๋ฐ ๋ฌธ์์ด์ ์ฌ์ด ๋์๋ค. ํญ๋ฐ ๋ฌธ์์ด์ด ํญ๋ฐํ๋ฉด ๊ทธ ๋ฌธ์๋ ๋ฌธ์์ด์์ ์ฌ๋ผ์ง๋ฉฐ, ๋จ์ ๋ฌธ์์ด์ ํฉ์ณ์ง๊ฒ ๋๋ค.
ํญ๋ฐ์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์งํ๋๋ค.
- ๋ฌธ์์ด์ด ํญ๋ฐ ๋ฌธ์์ด์ ํฌํจํ๊ณ ์๋ ๊ฒฝ์ฐ์, ๋ชจ๋ ํญ๋ฐ ๋ฌธ์์ด์ด ํญ๋ฐํ๊ฒ ๋๋ค. ๋จ์ ๋ฌธ์์ด์ ์์๋๋ก ์ด์ด ๋ถ์ฌ ์๋ก์ด ๋ฌธ์์ด์ ๋ง๋ ๋ค.
- ์๋ก ์๊ธด ๋ฌธ์์ด์ ํญ๋ฐ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์์ ์๋ ์๋ค.
- ํญ๋ฐ์ ํญ๋ฐ ๋ฌธ์์ด์ด ๋ฌธ์์ด์ ์์ ๋๊น์ง ๊ณ์๋๋ค.
์๊ทผ์ด๋ ๋ชจ๋ ํญ๋ฐ์ด ๋๋ ํ์ ์ด๋ค ๋ฌธ์์ด์ด ๋จ๋์ง ๊ตฌํด๋ณด๋ ค๊ณ ํ๋ค. ๋จ์์๋ ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋๋ "FRULA"๋ฅผ ์ถ๋ ฅํ๋ค.
ํญ๋ฐ ๋ฌธ์์ด์ ๊ฐ์ ๋ฌธ์๋ฅผ ๋ ๊ฐ ์ด์ ํฌํจํ์ง ์๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์ ๊ธธ์ด๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
๋์งธ ์ค์ ํญ๋ฐ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๊ธธ์ด๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 36๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
๋ ๋ฌธ์์ด์ ๋ชจ๋ ์ํ๋ฒณ ์๋ฌธ์์ ๋๋ฌธ์, ์ซ์ 0, 1, ..., 9๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ชจ๋ ํญ๋ฐ์ด ๋๋ ํ ๋จ์ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
mirkovC4nizCC44 C4
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
mirkovniz
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
12ab112ab2ab 12ab
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
FRULAโ
๋ฌธ์ฅ์ด ํญ๋ฐํ ๊ฒฝ์ฐ๋ ๋๊ฐ์ง์ด๋ค.
case 1) mirkovC4, C4 ์ ๊ฐ์ด ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด ๋ด์ ํญ๋ฐ ๋ฌธ์์ด์ด ๊ทธ๋๋ก ์๋ ๊ฒฝ์ฐ.
case 2) CC44 ์ ๊ฐ์ด ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด ๋ด์ ํญ๋ฐ ๋ฌธ์์ด์ ์ง์๋ ํญ๋ฐ ๋ฌธ์์ด์ด ๋์ค๋ ๊ฒฝ์ฐ.
ํฌ๊ฒ ์ด ๋๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์กฐ๊ฑด ๋ถ๊ธฐ ํ์์ ํด์ฃผ๋ฉด ๋๋ค.
์ฐ์ intํ idx ๋ณ์ ํ๋๋ฅผ ๋ง๋ค์ด ์ด ๋ณ์๊ฐ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด ๋ด์ ์๋ ๋ฌธ์๊ฐ ํญ๋ฐ๋ฌธ์์ด์ ์ธ๋ฑ์ค์ ์๋์ง ์๋์ง๋ฅผ ํ์ธํ๊ณ , ์๋ค๋ฉด ๋ช๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋์ง๋ฅผ ๋ํ๋ด๋ ๋ณ์์ด๋ค.
๋ง์ฝ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด ๋ด์ ๋ฌธ์๊ฐ ํญ๋ฐ๋ฌธ์์ด[idx] ์ ๊ฐ์ผ๋ฉด
intํ vector์ ํด๋น idx๋ฅผ ๋ฃ์ด์ฃผ๊ณ , idx+=1๋ฅผ ํด์ค๋ค.
๋ง์ฝ ์ด๋ ๊ฒ ๋ฃ์ idx ๊ฐ bomb.size()-1๊ณผ ๊ฐ์ผ๋ฉด, ๊ทธ๋งํผ vector์ ans string์์ ๋นผ์ฃผ๋ฉด ๋๋ค.
์ค์ํ ํฌ์ธํธ๋
1. ๋ง์ฝ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด ๋ด์ ๋ฌธ์๊ฐ ํญ๋ฐ๋ฌธ์์ด[idx]์ ๋ค๋ฅด๋ค๋ฉด, ์ด ๋ฌธ์๋ ํญ๋ฐ๋ฌธ์์ด[0] ์ด ์๋ ๊ฒฝ์ฐ์ ์ด ๋ฌธ์ ์ด์ ์ ๋์จ ๋ฌธ์๋ค์ ์ ๋ ํญํํ ์ ์๋ค.
2. ํ์ด์ ์ฉ์ด๋ฅผ ์ํด 1.์ ํด๋นํ๋ ๋ฌธ์๊ฐ ๋์ฌ ๊ฒฝ์ฐ vector์ -1๋ฅผ ๋ฃ์ด์ค๋ค.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string s, bomb, ans;
vector<int>index;
int main(){
cin>>s>>bomb;
int idx = 0;
for(auto c : s){
if(c == bomb[idx]){
index.push_back((idx));
ans.push_back(c);
idx += 1;
if(index.back() == bomb.size()-1){
for(int i=0; i<bomb.size(); i++){
index.pop_back();
ans.pop_back();
}
if(index.empty()){
idx = 0;
}else{
idx = index[index.size()-1]+1;
}
}
}else{
if(c == bomb[0]){
index.push_back(0);
ans.push_back(c);
idx = 1;
}else{
idx = 0;
ans.push_back(c);
index.push_back(-1);
}
}
}
if(ans.empty())
cout<<"FRULA";
else
cout<<ans;
}