문제 설명

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

제한 사항

  • 1 ≤ my_string의 길이 ≤ 100
  • letter은 길이가 1인 영문자입니다.
  • my_stringletter은 알파벳 대소문자로 이루어져 있습니다.
  • 대문자와 소문자를 구분합니다.

입출력 예

my_string letter result
“abcdef” “f” “abcde”
“BCBdbe” “B” “Cdbe”

코드

#include <string>
#include <vector>
#include <iostream>

using namespace std;

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

    for (const auto& cur_str: my_string)
    {
        std::string temp_str;
        temp_str += cur_str;
        
        if (temp_str != letter) answer += cur_str;
    }
    
    cout << answer;
    
    
    return answer;
}

문제 핵심 포인트

  • 문자열 다루기
    • string에서 인덱싱을 하면 char로 형변환이 됨.
  • string에 관련된 알고리즘 라이브러리 이용

<string>에 정의된 erase함수를 사용해보자

사용하는 방법 3가지

  • string& erase(size_t pos 0, size_t len = npos);
  • iterator erase(const_iterator p);
  • iterator erase(const_iterator first, const_iterator last;
std::string test = "Hello world!";

// Example #1
test.erase(0, 5); // pos 길이부터 len길이만큼의 문자를 지운다.

// Example #2
test.erase(test.begin() + 2); // p에 위치하는 문자 제거

// Example #3
test.erase(test.begin() + 5, test.begin() + 8); // first부터 last 직전 범위 문자열 삭제

특정 문자만 제거하기

test.erase(std::remove(test.begin(), test.end(), 'A'), test.end());

Reference

Leave a comment