어떤 숫자에서 k개의 수를 제거했을 때,
가장 큰 수를 만들려고 합니다.
예를 들어,
숫자 "1924"에서 숫자 2개를 제거하면 만들 수 있는 조합은:
→ "19", "12", "14", "92", "94", "24"
이 중 가장 큰 수는 "94"입니다.
number: 2자리 이상, 1,000,000자리 이하의 숫자 (문자열 형태)k: 제거할 수의 개수 (1 이상, number 자릿수 미만)import Foundation
func solution(_ number:String, _ k:Int) -> String {
var stack: [Character] = []
var removeCount = k
for num in number {
// 스택 마지막 숫자보다 현재 숫자가 클 경우, 제거
while let last = stack.last, removeCount > 0, last < num {
stack.removeLast()
removeCount -= 1
}
stack.append(num)
}
// 앞에서부터 (number.count - k)개만 사용
return stack.map { String($0) }
.prefix(number.count - k)
.joined()
}