처음에는 스택을 이용해 해결하려고 했다. 모든 숫자를 스택에 넣고 하나씩 빼면서 그 값이 스택의 top값과 비교했을 때 크거나 같으면 answer에 추가하고 그렇지 않은 경우 카운트 변수에 1을 더해주어 이 값이 k와 동일해지면 break 하고 마지막으로 스택에 남아있는 모든 값을 answer에 덧붙여주었다.
(나도 무슨 말인가 싶지만... 일단 문제에 예시로 나온 케이스는 성공했다. 하지만 채점 결과는 참담했다. 😥)
public String solution(String number, int k) {
String answer = "";
int len = number.length();
Stack<Integer> stack = new Stack<>();
for (int i = len-1; i >= 0; i--) {
stack.push(number.charAt(i)-'0');
}
int count = 0;
while (true) {
if (count == k) {
while (!stack.isEmpty()) answer += String.valueOf(stack.pop());
break;
}
int tmp = stack.pop();
if (!stack.isEmpty() && tmp >= stack.peek() ) {
for (int i = 0; i < answer.length(); i++) {
if (answer.charAt(i)-'0' < stack.peek()) {
count += answer.length();
answer = "";
}
}
answer += String.valueOf(tmp);
}
else {
count++;
}
}
return answer;
}