[프로그래머스 / C++] 원하는 문자열 찾기

YH·2023년 10월 28일
0

문제

원하는 문자열 찾기 : 문제 링크


문제 분석

  • 알파벳으로 이루어진 문자열 myString과 pat이 주어진다. myString의 연속된 부분 문자열 중 pat이 존재하면 1을 그렇지 않으면 0을 return
  • 소문자 변환을 위해 transform() 함수를 사용하므로 algorithm 헤더를 include. transform() 함수의 ::tolower 옵션을 통해 myString, pat 문자열을 모두 소문자로 변환
  • 첫번째 if문을 통해 pat의 길이 myString 보다 긴 경우, 0을 return
  • 두번째 if문에서는 string 헤더의 find() 함수를 사용하여, myString에서 pat 문자열을 찾을 경우, 즉 npos를 return 하지 않을 경우 1을, 문자열을 찾지 못할 경우 0을 return

algorithm 헤더의 transform() 함수 사용법
transform(first1, last1, d_first, unary_op);

  • first1 : 입력한 변수의 first 위치
  • last1 : 입력한 변수의 last 위치까지
  • d_first : 저장할 변수의 first 위치
  • unary_op : 변환할 방법이 있는 함수 (대문자로 : toupper, 소문자로 : tolower)

string 헤더의 find() 함수 사용법
str.find("찾는 문자")
=> 찾는 문자를 str 문자열 내에서 찾았다면 해당 문자열의 시작 위치를, 그렇지 않을 경우 npos를 return


풀이

#include <string>
#include <algorithm>

using namespace std;

int solution(string myString, string pat) {
    transform(myString.begin(), myString.end(), myString.begin(), ::tolower);
    transform(pat.begin(), pat.end(), pat.begin(), ::tolower);
    
    if(myString.size() >= pat.size()) {
        if(myString.find(pat) != string::npos) return 1;
    }
    return 0;
}
profile
Keep Recycling Your Dreams

0개의 댓글