본문 바로가기
프로그래머스 C++/Level.0

프로그래머스 C++ Level. 0 특정 문자 제거하기

by yeni_0224 2023. 4. 12.
728x90
반응형

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

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, string letter) {
    string answer = "";
    for(int i = 0 ; i < my_string.size(); i++){
        if(my_string[i] != letter[0]) {
         answer += my_string[i];  
        }
    }
    return answer;
}

생각의 전환이 필요하다. (정답을 검색해버렸다)

검색해버린 이유 : 구글에서 사용하라던 erase, std::remove 썼는데 안돼서...

letter과 같은 문자를 삭제하라

       >>>letter과 다른 문자를 출력하라

 

으아아아아아아악!!!

전에 다른 곳에서 사용했던 방법같은데 너무너무 아쉬웠다...ㅠ

#include <string>
#include <vector>
#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;
}

다른 사람 풀이를 보면 너무 속이 시원하다. 그냥 내가 알고싶었던 방향의 풀이를 알려주니까..

.erase(remove(배열.begin(), 배열.end(), letter[0]), 배열.end.());

 여기서 letter[0]은 삭제할 문자라는건 알겠는데 왜 저기 들어가있는지 모르겠다.

#include <string>
#include <vector>

using namespace std;

string solution(string my_string, string letter) {
    string answer = "";

    for(int i = 0; i < my_string.size(); i++)
    {
        if(my_string[i] == letter[0])
        {
            my_string.erase(my_string.begin() + i);
            i--;
        }
    }

    return my_string;
}

그래..!!! 이거야!!!!!! ㅜㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ

다른 사람의 풀이를 보며 슬퍼진다... 아마 키보드는 지문인식 되는것이다

이제 알아냈으니까 됐지뭐..

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string solution(string my_string, string letter) {

    string s= my_string;
    for (char c:letter)
    {
        s.erase(remove(s.begin(),s.end(),c),s.end());
    }


    return s;
}

이렇게 사용할 수 있다고 한다.

이제는 다음부터 반드시 잘 사용할것

#include <algorithm>도 추가해주어야한다.

 

erase().

remove(). 

728x90
반응형