새소식

인기 검색어

프로그래머스/Lv.2

[Swift] 짝지어 제거하기

  • -
import Foundation

struct Stack<T> {
    private var stack: [T] = []
    
    public var count: Int {
        return stack.count
    }
    
    public var isEmpty: Bool {
        return stack.isEmpty
    }
    
    public mutating func push(_ element: T) {
        stack.append(element)
    }
    
    public mutating func pop() -> T? {
        return isEmpty ? nil : stack.popLast()
    }
}


func solution(_ s:String) -> Int{
    
    var answer = Stack<Character>()
    
    for s in Array(s) {
        if !answer.isEmpty {
            let ch = answer.pop()!
            if ch == s {
                continue
            }
            answer.push(ch)
        }
        answer.push(s)
    }
    return answer.isEmpty ? 1 : 0
}

func solution2(_ s:String) -> Int{
    
    var answer = [Character]()
    let str = Array(s)

    for s in str {
        if !answer.isEmpty {
            let c = answer.popLast()!
            if s == c {
                continue
            }
            answer.append(c)
        }
        answer.append(s)
    }
    return answer.isEmpty ? 1 : 0
}

'프로그래머스 > Lv.2' 카테고리의 다른 글

[Swift] 최솟값 만들기  (0) 2023.02.05
[Swift] 최댓값과 최솟값  (0) 2023.02.05
[Swift] 점프와 순간 이동  (0) 2023.02.05
[Swift] 이진 변환 반복하기  (0) 2023.02.05
[Swift] 위장  (0) 2023.02.04
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.