for (int i = 0; i < n; i++){
if (words[i].find(x)!= string::npos){
result.push_back(i);
}
}
--------------------------
for (int i = 0; i < n; i++){
string s = words[i];
for (int j = 0; j < s.size(); j++){
if (s[j] == x){
result.push_back(i);
break;
}
}
}
--------------------------
보다시피 구조는 for문인데 하나는 find를 쓴거고 다른 하나는 내부에 for문을 쓴 2중 for문임
find의 시간복잡도가 O(N)이니 결국은 둘다 O(N^2)일텐데 왜 전자가 후자보다 4초가 더 빠르지?
string s = words[i]; 이거때문에 시간을 추가적으로 쓰잖아. 문자열 복사때문에. 애초에 문자열 복사 자체가 시간 복잡도에 대해서 선형적 증가를 가짐
참조나 직접 접근으로 바꿔야할듯? 뭐 아니면 말고
find 함수 헤더파일 뜯어봐봐