[C++] 프로그래머스

[프로그래머스/c++] 특정 문자 제거하기

말랑고래 2022. 11. 15. 00:57

 

<문제>

문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

<유형>

문자열, 반복, 입출력

 

<답>

이 문제는 문자열 관련 함수를 사용하면 간단해진다.

문제는, 해당 문자를 다 삭제해야하는데- 이 함수는 erase라는 함수를 사용하면 된다.

 

string::erase는 문자열에서 특정한 문자(열)을 제거해준다.

사용법은 총 3가지

string& erase(size_t pos = 0; size_t len = len); //0부터 len 길이 만큼의 문자열을 제거
iterator erase(const_iterator p); //p에 해당하는 문자 제거
iterator erase(const_iterator first, const_iterator last); //(first, last] 길이의 문자열 제거

보면 알겠지만, 특정 길이만큼의 문자열만 제거해준다.

우리는 특정 문자를 제거해야하므로, 여기에 조건을 추가해야한다. 

 

그래서 필요한것이 

algorithm::remove 함수다. 특정 문자가 있는 모든 인덱스를 반환해준다.

사용법은 아래와 같다.

remove(문자열.begin(), 문자열.end(), char)

인덱스(위치)를 반환하므로, remove함수를 erase 함수에 넣어준다.

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string solution(string my_string, string letter) {
    string answer = "";
    
    for(char c: letter){
        my_string.erase(remove(my_string.begin(), my_string.end(), c), my_string.end());
    }
    
    answer = my_string;
    return answer;
}