πŸ“ Coding Test Study/C++

[10μ£Ό μ™„μ„± C++ μ½”λ”©ν…ŒμŠ€νŠΈ] λ¬Έμžμ—΄ ν•„μˆ˜κ°œλ… - split(), substr(), erase()

ibelieveinme 2023. 8. 5. 21:25
728x90

* 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 루프

 

728x90