프로그래머스 - 원하는 문자열 찾기 - C++
프로그래머스 원하는 문자열 찾기 문제 바로가기 lowercase, uppercase C++에서 string을 lowercase 또는 uppercase하는 방법은 정말 다양하다. 1) transform()안에 iterator과 tolower()함수를 넣는 경우. 2) ASCII 아스키 코드를 이용해서 대문자->소문자로 바꾸는 경우 3) boost에서 to_lower() 함수를 불러와서 바꾸는 경우. 사실 가장 간단한 것은 boost 방식이라 이를 이용해서 문제를 해결했다. 내 풀이 myString의 각 자리를 pat의 첫 번째 요소와 비교해가며 조건을 만족하는 경우 1을 return하도록 했다. 이중 for문이라 시간복잡도는 O(n*m)이다. #include <string> #include <vector> #include <boost/algorithm/string.hpp> using namespace std; int solution(string myString, string pat) { boost::algorithm::to_lower(myString); boost::algorithm::to_lower(pat); int count = 0; if (myString.size() < pat.size()){ return 0; } for (int i=0; i<myString.size()-pat.size()+1; i++){ count = 0; for (int j=0; j<pat.size(); j++){ if (myString[i+j] == pat[j]){ count++; if (count == pat.size()){ return 1; } } } } return 0; } 다른 사람의 풀이 구경 조금 더 간단하게 풀어내는 방법이 없을까 고민하다가 다른 사람들의 풀이를 구경했다. 훨씬 깔끔하더라ㅜㅜㅜ 그러면 코드를 파헤쳐 보자 ...