#include <string>
#include <algorithm>
using namespace std;
string solution(string my_string, string letter)
{
my_string.erase(remove(my_string.begin(),my_string.end(), letter[0]),my_string.end());
return my_string;
}
remove(my_string.begin(), my_string.end(), letter[0]): 이 함수는 my_string의 시작부터 끝까지 탐색하면서 letter[0]과 일치하는 모든 문자를 "제거"합니다. 그런데 여기에서 "제거"는 실제로 해당 요소들을 문자열에서 삭제하는 것이 아니라, 문자열의 뒷부분으로 이동시키는 것을 의미합니다.
remove는 이동이 끝난 후의 마지막 위치의 반복자를 반환합니다. my_string.erase(...): remove에서 반환된 반복자를 사용하여 my_string에서 해당 위치부터 끝까지의 모든 문자를 실제로 삭제합니다. 예를 들어, solution("apple", "p")를 호출하면, letter[0]은 'p'입니다. 따라서 "apple"에서 'p' 문자를 모두 제거하면 결과는 "ale"가 됩니다.
이해를 돕기 위해 단계별로 예를 들어 설명해보겠습니다:
1. 원래 문자열: "apple"
2. remove 후의 문자열: "alepp" ('p'가 끝으로 이동되었습니다.)
3. remove가 반환한 반복자 위치: "ale|pp"
4. erase를 사용하여 "pp"를 삭제한 후의 문자열: "ale" 따라서 함수의 결과는 "ale"입니다.
'C++' 카테고리의 다른 글
string::find (0) | 2024.11.24 |
---|---|
STL : sort algorithm (0) | 2024.11.24 |
string stream (0) | 2024.11.24 |
간단한 Queue 학습 및 제작 (0) | 2024.09.21 |
유클리드 호제법을 통한 최소공배수, 최대공약수 알고리즘 (0) | 2024.09.16 |