본문 바로가기

problem solving

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

높은 자리수를 기준으로 차례로 검사해 큰 수를 알아낼 수 있다.

그래서 최대 k(제거해야 할 개수)만큼 제거하기위해 이중 반복문을 사용한다.

안쪽 반복문에서는 가장 큰 수를 골라내고 위치를 pos변수에 저장한다.

안쪽 반복문이 종료된 후  제거해야할 수인 k값이 남았다면 k와 현재  인덱스인 i를 갱신한다.

#include <string>
#include <vector>
 
using namespace std;
 
string solution(string number, int k) {
    string answer = "";
    
    int size = number.length() - k;
    int max = 0, pos = 0;
    for (int i = 0size != answer.length(); i++) {
        for(int j = i; j < i + k + 1 && j < number.length(); j++) {
            if(j != i && max >= number[j]) { continue; }
            max = number[j];
            pos = j;
        }
        if(k > 0) {
            k -= pos - i;
            i = pos;
        }
        answer += number[i];
    }
    return answer;
}
cs

'problem solving' 카테고리의 다른 글

[프로그래머스]더 맵게  (0) 2020.03.10
[프로그래머스]소수 찾기  (0) 2020.03.10
[프로그래머스]가장 큰 수  (0) 2020.03.09
[프로그래머스]조이스틱  (0) 2020.03.08
[프로그래머스]컬러링북  (0) 2020.03.08