본문 바로가기

코딩 및 기타/코딩 테스트 준비

[필수 개념] Split

728x90

∙ split()

- 코딩테스트에서는 문자열을 split() 하는 로직이 많이 등장

- split 함수는 다른 프로그래밍 언어에서도 특정 문자열을 기준으로 쪼개어서 배열화시키는 함수라의 의미

- C++에서는 STL에서 지원하지 않아 만들어야 함

 

// split() 함수
// o(n)의 시간복잡도 가짐

#include <iostream>
#include <vector>
#include <string>

using namespace std;

vector<string> split(string input, string delimiter){
    vector<string> ret;
    long long pos = 0;
    string token = "";
    // while문이 중요하다
    // input에서 delimiter를 찾는다. 못 찾을 때까지는 루프 반복
    while ((pos = input.find(delimiter)) != string::npos){
        // 찾으면 해당 pos까지 문자열을 추출
        // ex) abcdabc에서 d를 찾았다면 pos는 3을 반환하게 되고 3만큼 substr을 해서 abc까지 추출
        token = input.substr(0, pos);
        ret.push_back(token);
        // 앞에서부터 문자열을 지운다.
        // adcd에서 d이면 pos =3 , delimiter = 1
        input.erase(0, pos + delimiter.length());
    }
    ret.push_back(input);
    return ret;
}

int main()
{
    string str = "안녕하세요 저는 C언어 천재입니다. 정말이에요!";
    string d = " ";
    
    vector<string> a = split(str, d);
    for (string b : a){
        cout << b << "\n";
    }
}

'코딩 및 기타 > 코딩 테스트 준비' 카테고리의 다른 글

2주차(개념)  (0) 2023.11.09
1주차 (개념)  (0) 2023.10.27
[필수 개념] 중복된 요소 제거 방법 과 unique()  (0) 2023.10.26
[필수 개념] 순열 / 조합  (0) 2023.10.23
[필수 개념] 재귀함수  (0) 2023.10.23