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 |