알고리즘

[Swift 알고리즘] 프로그래머스 - 짝지어 제거하기

코코종 2023. 5. 1. 21:06
728x90

안녕하세요 코코종입니다. 2레벨 문제를 뽀개는 중입니다.

import Foundation

func solution(_ s:String) -> Int{
    var answer: Int

    var arr = Array(s)
    
    var stack: [Character] = []
    
    for i in 0..<arr.count {
        if stack.isEmpty { 
            stack.append(arr[i]) 
        } else {
          if stack.last! == arr[i] {
              stack.removeLast()
          } else {
              stack.append(arr[i])
          }
        }
    }
    
    answer = stack.isEmpty ? 1 : 0

    return answer
}

쉬운 문제였는데요. stack을 만들어서 가장 위에 있는 값이랑 다음 값이 같다면 pop을 해주고 아니라면 append를 해주는 식입니다.

웃긴건... popLast()로 하면 시간 초과가 뜨네요 ㅎ... 효율성 1,2번만 틀리길래 검색해보니 removeLast로 푸시더라구요. 왜 popLast는 안되는지 의문이네요 허허... 스위프트 억까좀 멈춰!


실제로 해봤는데 pop이 더 빠름 인정?

 

728x90