본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 큰 수 만들기 c++

by 오오오니 2024. 1. 29.

풀이

앞자리에 큰 수가 들어가야한다.
1. 앞자리에 큰 수가 들어갈 수 있는 후보를 바로 옆가 비교하여 정한다.
2. 임의의 수 a,b,c,d가 있을때 수 abcd83이 있다면  a와 b중 큰거를 택하고 작은것을 삭제한다.
3. b 삭제 후 acd83 에서 a와 c를 비교해서 작은 것을 삭제한다. 
4. c가 더 크다면 c와 d를 비교해서 더 작은 것을 삭제한다.
4. 2,3,4를 k가 0이 될 때까지 반복한다. 

 

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


string solution(string number, int k) {
    string answer = "";
    for(int i=0;i<number.size()-1;i++){
        if(k==0)
            break;
        if(number[i]<number[i+1]){
            k--;
            number.erase(i,1);
             i=-1;
            
        }
        
    }
    
    if(k>0){
        number.erase(number.size()-k,k);
    }
    return answer=number;
}