https://www.acmicpc.net/problem/16916
<틀린 코드>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
string s,p;
cin>>s>>p;
if(s.find(p)!=string::npos) cout<<1<<'\n';
else cout<<0<<'\n';
}
이 코드는 시간 복잡도가 1초가 넘어서는 코드이다.
<맞는 코드>
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
string s,p;
cin>>s>>p;
char *ptr = strstr((char*)s.c_str(),(char*)p.c_str());
if(ptr != NULL) cout<<1<<'\n';
else cout<<0<<'\n';
}
알아보던 도중 c언어와 c++에서 둘다 호환되는 strstr함수에 대해서 알게 되었다.
이는 어셈블리어 최적화를 통해 복잡도 문제를 해결할 수 있다.
'PS > 문자열 알고리즘[String]' 카테고리의 다른 글
백준 5052 전화번호 목록(c++) (0) | 2022.08.29 |
---|---|
백준 1213 팰린드롬 만들기(c++) (0) | 2022.07.27 |
백준 15353 큰 수 A+B(c++) (0) | 2022.07.12 |
백준 11478 서로 다른 부분 문자열의 개수(c++) (1) | 2022.07.11 |
백준 1120 문자열(c++) (0) | 2022.07.08 |