높은 자리수를 기준으로 차례로 검사해 큰 수를 알아낼 수 있다.
그래서 최대 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 = 0; size != 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 |