티스토리 뷰

풀이

  • 스택을 사용해서 판별
  • 스택이 비어있거나 스택의 Top이 나보다 크거나 같으면 푸쉬
  • Top이 나보다 작으면 나보다 크거나 같은 수를 만날때 까지 팝을 해준다
  • 이때 K를 하나씩 감소시키는데 0이되면 나머지를 전부 푸쉬한다
  • 숫자를 전부 넣었는데 K가 남았다면 K만큼 팝을 해준다
  • 스택에 들어있는 값을 반환한다

전체 코드

import Foundation

func solution(_ number:String, _ k:Int) -> String {
  let number = number.map { String($0) }
  var stack: [String] = []
  var k = k
  for num in number {
    if let top = stack.last { // 스택이 비어있지 않은 경우
      if top >= num { // 스택의 top이 나보다 크거나 같으면 스택에 넣음
        stack.append(num)
      }else { // 스택의 top이 나보다 작으면 나보다 크거나 같을 때까지 팝
        // 이때 K를 다쓰면? 거기까지만 하고 프린트?
        while !stack.isEmpty && k > 0 {
          if stack.last! >= num { break }
          k -= 1
          stack.removeLast()
        }
        stack.append(num)
      }
    }else { // 스택이 비어있는 경우
      stack.append(num)
    }
  }
  return stack[0..<(stack.count-k)].joined()
}

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함