질문하기 란에서 정답코드를 봐서 각 자릿수가 뒷자릿수보다 작으면 삭제하는 걸 k 번 반복한다는 걸 알게 되었고
12번 테케가 계속 틀리길래 역시 질문을 봤고 같은 숫자만 있는 경우엔 삭제가 안되고 있다는 걸 알게되었다.
처음엔 단순히 k번째로 작은 숫자까지를 앞에서부터 차례대로 제거해주면 된다고 잘못생각했는데 테케만 맞고 돌렸을 때 다 틀렸었다.
사실 나는 맨날 코테 볼 때 테케만 맞는지 확인하고 제출하고 넘기는데 다 틀렸던 걸까^^...
12번 테케가 사실 0관련된 걸줄 알고 관련 처리를 열심히 해봤는데 애초에 테케에 '0'이란 문자가 포함된 테케가 없었던 것 같다.
#include <string>
#include <vector>
#include<algorithm>
#include<iostream>
using namespace std;
bool comp_smaller(char &a, char &b){
return a<b;
}
bool comp_greater(char &a, char &b){
return a>b;
}
string solution(string number, int k) {
string answer = "";
vector<char> nv;
for(int i = 0;i<number.size();i++){
nv.push_back(number[i]);
}
for(int i = 0;i<k;i++){
//cout<<"사이즈: "<<nv.size()<<endl;
bool erased =false;
for(int j = 0;j<number.size();j++){
if(nv[j]<nv[j+1]){
//빼기
erased= true;
nv.erase(nv.begin()+j);
break;
}
}
if(!erased){
nv.pop_back();
}
}
//앞머리0을 제거하자
while(!nv.empty()&&*nv.begin() =='0'){
nv.erase(nv.begin());
}
if(nv.empty()){
nv.push_back('0');
}
for(int i = 0;i<nv.size();i++){
answer+=nv[i];
}
return answer;
}