새소식

코딩테스트/백준_골드

[C++][백준 9935] 문자열 폭발

  • -

[문제]

9935번: 문자열 폭발 (acmicpc.net)

 

9935번: 문자열 폭발

첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모

www.acmicpc.net


[문제 풀이]

문자열에 대해서 배울 수 있는 좋은 문제이다.

나는 빈 string을 하나 더 만들고 해당 문자열에 스택을 사용하듯이 계속 쌓아뒀다. 그러다가 만일 해당 문자열이 bomb와 같다면 해당 문자열 만큼을 새로 만든 문자열에서 지우는 형식으로 진행하였다.

 

* find를 쓸려다가 문자열의 길이가 1,000,000 라서 시간 복잡도에 걸린다고 생각하여서 쓰지 않았다.

* string 에서 erase 함수와 substr 함수에 대해서 익혀두자. 코딩 테스트에서 문자열을 자르거나 할 때 굉장히 유용하게 쓰일 수 있다.


[코드]

#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <string>

using namespace std;

int main(){
    string s;
    cin>>s;
    string bomb;
    cin>>bomb;

    string s3;
    
    for(int i = 0;i<s.size();i++){
        s3.push_back(s[i]);
        if(s3.back() == bomb.back()){
            if(s3.size() >= bomb.size()){
                if(s3.substr(s3.size() - bomb.size(), bomb.size()) == bomb){
                    s3.erase(s3.size() - bomb.size(),bomb.size());
                }
            }
        }
    }

    if(s3.size() <= 0){
        cout<<"FRULA"<<endl;
    }
    else{
        cout<<s3<<endl;
    }

    return 0;
}

'코딩테스트 > 백준_골드' 카테고리의 다른 글

[C++][백준 1300] K번째 수  (0) 2022.10.24
[C++][백준 13144] List of Unique Numbers  (0) 2022.10.21
[C++][15686] 치킨 배달  (2) 2022.10.15
[C++][백준 9251] LCS  (0) 2022.10.14
[C++][백준 4179] 불!  (2) 2022.09.28
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.