본문 바로가기
Algorithm(CodeTree, C++)/문자열

[코드트리] 문자열 계속 지우기 C++

by kurooru 2024. 6. 22.

#include <iostream>
#include <string>
using namespace std;

int get_target_idx(string s, string target, int s_len, int target_len) {
    for (int i = 0; i < s_len - target_len; i++) {
        bool detected = true;
        for (int j = 0; j < target_len; j++) {
            if (s[i + j] != target[j]) {
                detected = false;
            }
        }
        if (detected) {
            return i;
        }
    }
}

bool target_detected(string s, string target, int s_len, int target_len) {
    
    for (int i = 0; i < s_len - target_len; i++) {
        bool detected = true;
        for (int j = 0; j < target_len; j++) {
            if (s[i + j] != target[j]) {
                detected = false;
            }
        }
        if (detected) {
            return true;
        }
    }

    return false;
}

int main() {
    // input
    string s, target;
    cin >> s >> target;

    int s_len = s.length(), target_len = target.length();
    bool flag = true;
    int target_idx;

    while (flag) {
        if (target_detected(s, target, s_len, target_len)) {
            target_idx = get_target_idx(s, target, s_len, target_len);
            s.erase(target_idx, target_len);
        } else {
            flag = false;
        }
    }

    //print
    cout << s;
    return 0;
}

 

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai