[μ€μννΈ μκ³ λ¦¬μ¦] νλ‘κ·Έλλ¨Έμ€: ν° μ λ§λ€κΈ°
λ¬Έμ
μ΄λ€ μ«μμμ kκ°μ μλ₯Ό μ κ±°νμ λ μ»μ μ μλ κ°μ₯ ν° μ«μλ₯Ό ꡬνλ € ν©λλ€.
μλ₯Ό λ€μ΄, μ«μ 1924μμ μ λ κ°λ₯Ό μ κ±°νλ©΄ [19, 12, 14, 92, 94, 24] λ₯Ό λ§λ€ μ μμ΅λλ€. μ΄ μ€ κ°μ₯ ν° μ«μλ 94 μ λλ€.
λ¬Έμμ΄ νμμΌλ‘ μ«μ numberμ μ κ±°ν μμ κ°μ kκ° solution ν¨μμ 맀κ°λ³μλ‘ μ£Όμ΄μ§λλ€. numberμμ k κ°μ μλ₯Ό μ κ±°νμ λ λ§λ€ μ μλ μ μ€ κ°μ₯ ν° μ«μλ₯Ό λ¬Έμμ΄ ννλ‘ return νλλ‘ solution ν¨μλ₯Ό μμ±νμΈμ.
μ ν 쑰건
- numberλ 1μ리 μ΄μ, 1,000,000μ리 μ΄νμΈ μ«μμ λλ€.
- kλ 1 μ΄μ numberμ μλ¦Ώμ λ―Έλ§μΈ μμ°μμ λλ€.
νμ΄
그리λν λ°©λ²μΌλ‘ ν΄κ²°ν μ μμ΅λλ€. μμμλΆν° μμ μ«μλ₯Ό μ£Όμ΄μ§ κ°μλ§νΌ μ§μμ£Όλ©΄ λ¨μ μ«μλ€μ ν©μ³ κ°μ₯ ν° μ«μλ₯Ό λ§λ€ μ μμ΅λλ€. μ΄λ₯Ό μν΄μ μ€νμ λ§λ€μ΄μ μ€νμ κ°μ₯ μμ μλ κ°λ³΄λ€ ν° κ²½μ°μλ§ μ§μ΄λ£κ³ μ§μΈ μ μλ μ«μμ κ°μκ° λ λ¨μλ€λ©΄ κ·Έ λ€μ μ«μλΆν° κ°μ μμ μ λ°λ³΅νλλ‘ κ΅¬ννμ΅λλ€.
μ½λ
import Foundation
func solution(_ number:String, _ k:Int) -> String {
var nums = Array(number)
var stack : [Character] = []
var eraseCount = 0
while !nums.isEmpty && eraseCount != k {
if !stack.isEmpty && !nums.isEmpty && nums.first! > stack.last! {
while !stack.isEmpty && nums.first! > stack.last! {
stack.popLast()
eraseCount += 1
if eraseCount == k {
break
}
}
stack.append(nums.removeFirst())
} else {
stack.append(nums.removeFirst())
}
}
while !nums.isEmpty {
stack.append(nums.removeFirst())
}
while eraseCount != k {
stack.popLast()
eraseCount += 1
}
return String(stack)
}