위 글은 큰돌의 터전 님의 강의자료를 참조해서 정리하고 제가 알고리즘을 풀면서 더 추가적으로 사용할 만한 내용들을 정리한 글입니다.

알고리즘 풀이 강의로 큰돌의 터전님의 강의 강력 추천드립니다.

강의 링크

알고리즘 풀 때 string을 써야하는 이유

입력이 한글이라면 코딩 테스트 특성상 영어만을 입력으로 주지 않을 수가 있다.

만약 char 형 배열을 사용한다면 영어 입력인 경우 문제가 없지만 한글인 경우 한글은 한 글자당 3바이트라서 원하는 출력을 유도할 수 없을 수 있다.

string에서 많이 사용하는 메서드 모음

#include <bits/stdc++.h>
using namespace std;
int main(){
		string a = "love is";
		a += " pain!";
		a.pop_back();
		cout << a << " : " << a.size() << "\\n";
		cout << char(* a.begin()) << '\\n';
		cout << char(* (a.end() - 1)) << '\\n';
		// string& insert (size_t pos, const string& str);
		a.insert(0, "test ");
		cout << a << " : " << a.size() << "\\n";
		// string& erase (size_t pos = 0, size_t len = npos);
		a.erase(0, 5);
		cout << a << " : " << a.size() << "\\n";
		// size_t find (const string& str, size_t pos = 0);
		auto it = a.find("love");
		if (it != string::npos){
		cout << "포함되어 있다." << '\\n';
		}
		cout << it << '\\n';
		cout << string::npos << '\\n';
		// string substr (size_t pos = 0, size_t len = npos) const;
		cout << a.substr(5, 2) << '\\n';
		return 0;
}
/*
love is pain : 12
l
n
test love is pain : 17
love is pain : 12
포함되어 있다.
0
18446744073709551615
is
*/

+=

메서는 아니며 문자열에서 문자열을 더할 때 보통 += 를 써서 문자열 또는 문자를 더합니다. push_back()라는 메서드가 있지만 이는 문자 밖에 더하지 못해 보통 += 를 씁니다.

begin()

문자열의 첫번째 요소를 가리키는 이터레이터를 반환합니다.

end()

문자열의 마지막 요소 그 다음을 가리키는 이터레이터를 반환합니다. 참고로 begin()과 end()는 자료구조인 vector, Array, 연결리스트, 맵, 셋에서도 존재하며 똑같은 의미를 지닙니다.

back()

string의 마지막 인자를 반환합니다.

front()도 존재하지만 그것은 str[0]으로 접근이 가능하므로 딱히 사용이 잘 안되지만 back()은 상당히 유용하게 사용할 수 있습니다. *(str.end()); 이렇게 접근하지 맙시다.

size()

문자열의 사이즈를 반환합니다. O()의 시간복잡도를 가집니다.

insert(위치, 문자열)