import java.util.Stack
class Solution{
fun solution(number: String, k: Int): String {
var answer = ""
var stack = Stack<Char>()
var removeCount = k
for (digit in number) {
while (stack.isNotEmpty() && stack.last() < digit && removeCount > 0) {
stack.removeAt(stack.size - 1) // 스택의 마지막 숫자 제거
removeCount--
}
stack.add(digit) // 현재 숫자를 스택에 추가
}
// 아직 제거할 숫자가 남았다면, 뒤에서부터 제거
return stack.subList(0, stack.size - removeCount).joinToString("")
}
}
문제 해결 POINT
숫자를 하나씩 순회하면서 스택에 추가.
스택의 가장 위 숫자가 현재 숫자보다 작으면, 스택에서 제거. 이 작업은 최대 k번 반복됨.
k개의 숫자를 제거한 후 남은 숫자를 스택에 그대로 추가.
최종 결과로 스택에 남은 숫자를 이어 붙여 반환함. 만약 아직 k만큼 제거하지 않았다면, 뒤에서부터 제거함.