* split(): ํน์ ๋ฌธ์์ด์ ๊ธฐ์ค์ผ๋ก ์ชผ๊ฐ๋ ํจ์.
C++ ์์ ์ง์ํ์ง ์์์ ์ง์ ๊ตฌํํด์ผ ํจ.
* ์๊ฐ๋ณต์ก๋: O(n)
* ๋์ด์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ์ชผ๊ฐ๋ ์์ ์ฝ๋. ์๊ธฐ โ โ โ โ โ
#include <iostream>
#include <string>
#include <vector>
using namespace std;
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;
}
int main() {
string s = "์๋
ํ์ธ์ ๋นต์ด๋นต์ด์จ, ๋ง๋ ๋ฅ์ง์?", d = " ";
vector<string> a = split(s, d);
for (string b : a) cout << b << "\n";
return 0;
}
find(์ฐพ๋ ๋ฌธ์์ด): ๋ฌธ์์ด์์ ์ฐพ๋ ๋ฌธ์์ด์ ์์น๋ฅผ returnํจ.
string::npos: find ํจ์์์ ์ฐพ๋ ๋ฌธ์์ด์ด ์๋ ๊ฒฝ์ฐ string::npos๋ฅผ ๋ฐํํจ
substr[์์์์น, ๋ถ๋ถ ๋ฌธ์์ด ๊ธธ์ด): ๋ฌธ์์ด์ ์ผ๋ถ๋ฅผ ๋ฆฌํดํ๋ ํจ์. substr(0, 4) ์ด๋ฉด 0,1,2,3 ๊ฐ์ return.
erase[์์์์น, ๊ธธ์ด): ๋ฒกํฐ์ ํน์ ์์๋ฅผ ์ง์ฐ๋ ํจ์. erase(0, 5) ์ด๋ฉด 0,1,2,3,4 ๊ฐ์ ์ง์.
for(ํ์ ์์๋ณ์๋ช : ํ์ ์ ๋ด์ ์ปจํ ์ด๋): ๋ฒ์๊ธฐ๋ฐ for ๋ฃจํ