[C++] ALGOSPOT: MISPELL


이미지 20

문자열 처리 관련 문제. C++ 기본적인 지식만 있으면 쉽게 풀수있는 문제이다.

 

입력받은 문자열을 공백을 기준으로 자르고

주어진 숫자위치에 있는 문자를 지우면 된다.

문제를 풀고나서 생각되는게 substr 보단 erase 쓰는게 더 좋았을 것 같다.

 

C++를 아직 배우는 단계라 좀 헷갈리는 부분이 있었는데.

cin 으로 인풋을 한 다음에 getline 으로 또 인풋을 받으려니까 오류가 났었다.

 

 

getline() 하기 전에 꼭 cin.ignore()를 해줘야 제대로 입력을 받을 수 있다.

 

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

using namespace std;

int main(){
    int t;
    cin >> t;

    cin.ignore();

    vector<string> v;

    for(int i=0; i<t; i++){
        string input;

        getline(cin, input);
        int pos = input.find(" ");
        
        string number = input.substr(0, pos);
        input = input.substr(pos + 1, input.length() - pos);

        pos = stoi(number);

        string output;

        output += input.substr(0, pos-1);
        output += input.substr(pos, input.length()-pos);

        v.push_back(output);
    }

    for(int i=0; i<t; i++){
        cout << i+1 << " " << v[i] << endl;
    }
}