1. 앞자리수부터 오른쪽 수보다 왼쪽수가 더 작으면 지운다.
2. 1번을 다 실행했음에도 지워진 수가 없으면(기존 n_size와 number.size가 같다면) number중에서 제일작은 수부터 하나씩 제거한다.
main포함 코드(c++)
#include <string>
#include <vector>
using namespace std;
string solution(string number, int k) {
int n_size = number.size();
for(int i=0;i<number.size();i++){
if( n_size == number.size()+k) break;
if(number[i] < number[i+1]) { number.erase(number.begin()+i); i=-1; }
}
if(n_size == number.size()){
for(int i=0;i<number.size();i++){
if( n_size == number.size()+k) break;
number.erase(min_element(number.begin(), number.end()));
i=-1;
}
}
return number;
}
int main() {
string number = "99991";
int k = 3;
solution(number, k);
}
사용한 테스트케이스
"7777" , 1 / 777
"99991", 3 / 99
'코딩테스트 연습 > programmers' 카테고리의 다른 글
[Programmers]탐욕법 > 단속카메라 (0) | 2022.01.26 |
---|---|
[Programmers]탐욕법 > 섬연결하기 (0) | 2022.01.25 |
[Programmers]완전탐색 > 카펫(c++) (0) | 2022.01.20 |
[Programmers]완전탐색 > 소수찾기(c++) (0) | 2022.01.20 |
[Programmers] 깊이/너비 우선 탐색(DFS/BFS) > 여행경로(c++) (0) | 2022.01.17 |