์๋ฆ๋ค์ด ๋ฌธ์์ด ์ฑ๊ณต
1 ์ด 1024 MB 667 244 193 42.605% ๋ฌธ์
๋น์ ์ ๋ฌธ์์ด S ๋ฅผ ์ ๋ฌผ ๋ฐ์๋ค. ํ์ง๋ง ๋น์ ์ ์ค์ง ๋ฌธ์์ด T ๋ง์ ์๋ฆ๋ต๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์์ง ์๋ค. ๋น์ ์ ๊ฐ์ ์ข ๋ฅ์ ๋ฌธ์๊ฐ ๋ ๋ฒ ์ด์ ๋์ค๋ ๊ฒ์ ์ง์ํ๊ธฐ ๋๋ฌธ์, T ์ญ์ ๋ชจ๋ ๋ฌธ์๊ฐ ์๋ก ๋ค๋ฅด๋ค.
๊ทธ๋ฌ๋ ๋น์ ์๊ฒ ์ข์ ์๊ฐ์ด ๋ ์ฌ๋๋ค. ๋ฐ๋ก S ์ ๋ฌธ์๋ค์ ๊ณจ๋ผ๋ด์ T ๋ฅผ ๋ง๋๋ ๊ฒ์ด๋ค! ๋น์ ์ S ์์ ๋ฌธ์๋ค์ ๊ณจ๋ผ๋ด์ S โ์์์ ์์๋๋ก ์ด์ด ๋ถ์ฌ ์ ๋ฌธ์์ด์ ๋ง๋๋ ์ํ์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํ ์ ์๋ค. ์ด๋ S ์ ๊ฐ ๋ฌธ์๋ ์ต๋ ํ ๋ฒ์ฉ ๊ณจ๋ผ๋ผ ์ ์๋ค. ์๋ฅผ ๋ค์ด, S ๊ฐ "aabb"์ด๋ฉด ์ฒซ ๋ฒ์งธ ๋ฌธ์ "a"์ ์ธ ๋ฒ์งธ ๋ฌธ์ "b"๋ฅผ ๊ณจ๋ผ ๋ฌธ์์ด "ab"๋ฅผ ๋ง๋ค๊ณ , ๋ค์ ๋ ๋ฒ์งธ ๋ฌธ์ "a"์ ๋ค ๋ฒ์งธ ๋ฌธ์ "b"๋ฅผ ๊ณจ๋ผ ๋ฌธ์์ด "ab"๋ฅผ ๋ง๋ค ์ ์๋ค.
๋น์ ์ T ๋ฅผ ๊ฐ๋ฅํ ํ ๋ง์ด ๋ง๋ค๊ณ ์ถ๋ค. ๋ง๋ค ์ ์๋ T ์ ์ต๋ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํด๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค๊ณผ ๋์งธ ์ค์ ์์ด ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด S ์ T ๊ฐ ๊ฐ๊ฐ ์ฃผ์ด์ง๋ค. (1≤|S|≤106 , 1≤|T|≤26 , |T|≤|S| , |S| ์ |T| ๋ ๊ฐ๊ฐ S ์ ๊ธธ์ด์ T ์ ๊ธธ์ด๋ฅผ ์๋ฏธํ๋ค.)
โT
์ ๋ชจ๋ ๋ฌธ์๋ ์๋ก ๋ค๋ฅด๋ค.์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ง๋ค ์ ์๋ ๋ฌธ์์ด T ์ ์ต๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
aabb ab
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
2
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
aabb ba
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
0
์์ ์ ๋ ฅ 3 ๋ณต์ฌ
abba ab
์์ ์ถ๋ ฅ 3 ๋ณต์ฌ
1โ
N์ด 1000000, M์ด 26์ด๋ฏ๋ก NM์ ์๊ฐ์ด๊ณผ๊ฐ ๋์ง ์๋๋ค.
M์ ์์๊ฐ ๊ท์น์ ๋ฐ๋ผ ๋์จ ํ์๋ฅผ intํ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ฃผ๊ณ , N์ ๋ชจ๋ ์์๋ฅผ ํ์ํ๋ฉด์ ์ด๋ฅผ ๊ท์น์ ๋ฐ๋ผ ์ํํด์ฃผ๋ฉด ๋๋ค.
๊ท์น์ ์ด์ฒํผ M์ ์์๋ค์ ์์๋๋ก ๋์์ผ ํ๋ฏ๋ก, ๋ค์ ์์๊ฐ ์์ ์์๋ณด๋ค ๋จผ์ ๋์์์ผ๋ฉด ์ด๋ ์ธ๋ชจ๊ฐ ์์ด์ง๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์์์๋ ์์๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์๋ฅผ ์ธ๊ณ , ๋ง์ฝ ์์์๋ ์์๊ฐ ์๋ค๋ฉด continue, ์๋๋ผ๋ฉด ์์ ์์๋ฅผ -1ํด์ฃผ๊ณ ๋ค์ ์์๋ฅผ +1 ํด์ฃผ๋ฉด ๋๋ค.
#include <iostream>
#include <string>
using namespace std;
string s1, s2;
int idx = 0, s2arr[26];
int main(){
cin>>s1>>s2;
for(auto c : s1){
for(int i=0; i<s2.size(); i++){
if(s2[i] == c){
if(i == 0)
s2arr[i] += 1;
else if(s2arr[i-1]){
s2arr[i-1] -= 1;
s2arr[i] += 1;
}
}
}
}
cout<<s2arr[s2.size()-1];
}