짱정연 2023. 10. 16. 23:13
반응형

썸네일

들어가며

코딩테스트에서는 문자열을 split하는 로직(특정 문자열을 기준으로 쪼개어 배열화)이 많이 사용된다. 하지만 C++ STL에서는 관련된 함수를 지원하지 않기 때문에 직접 구현해야 한다.

 

split() 구현

// input: 쪼갤 문자열
// delimiter: 기준 문자열
vector<string> split(string input, string delimiter) {
    vector<string> ret;
    long long pos = 0;
    string token = "";

    while ((pos = input.find(delimiter)) != string::npos) {
        token = input.substr(0, pos);
        ret.push_back(token);
        input.erase(0, pos + delimiter.length());
    }
    ret.push_back(input);
    
    return ret;
}

while문 부분이 핵심 로직이다.

  • while ((pos = input.find(delimiter)) != string::npos) - input에서 delimiter을 못 찾을 때까지 반복한다.
    • input에 delimiter가 있으면 계속 반복한다.
  • token = input.substr(0, pos) - 찾았다면, 해당 pos까지 문자열을 추출한다.
  • ret.push_back(token) - ret이라는 배열에 추출한 문자열을 넣는다.
  • input.erase(0, pos + delimiter.length()) - 앞에서 시작해서 기준 문자열까지의 문자열을 지운다.
    • ex) abcdabcdabc를 'd'를 기준으로 나눴다면, abcdabcdabc는 abcdabcdabc가 된다.

Reference

 

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트 - 인프런 | 강의

네이버, 카카오, 삼성의 코딩테스트를 10주만에 합격시킨 최고의 코딩테스트 강의!, 코딩테스트, 이제 검증된 10주 완성 커리큘럼으로 정복하자!😎 [사진] 코딩테스트 강의어떤 것을 골라야 할까

www.inflearn.com

 

반응형