문제
문제 풀이
스택 자료구조를 이용하여 number에 있는 값을 순서대로 입력한다.
이전 입력된 문자가 현재 입력되는 문자보다 작은 경우 스택에서 빼주고 k값을 -1 해준다. 그렇게 다 돌고 나면 나오는 결과에서 아직 k가 1 이상인 경우 현재 스택에서 먼저 나오는 값들을 k가 0이 될 때 까지 빼준다.
스택에 남아 있는 값들을 StringBuilder를 통해서 문자열로 결합하고 reverse후 String으로 반환해준다.
나의 답안
public static String solution(String number, int k) {
Stack<Character> deque = new Stack<>();
StringBuilder sb = new StringBuilder();
char[] chars = number.toCharArray();
for (int i = 0; i < chars.length; i++) {
char cur = chars[i];
while (!deque.isEmpty() && deque.peek() < cur && k > 0) {
deque.pop();
k--;
}
deque.add(cur);
}
while (k > 0) {
deque.pop();
k--;
}
while (!deque.isEmpty()){
sb.append(deque.pop());
}
return sb.reverse().toString();
}