본문 바로가기
알고리즘

Swift로 자료구조 구현하기 - 스택(Stack) 예제

by mr.conan 2023. 6. 22.
728x90
반응형

소개: 자료구조는 데이터를 저장하고 조직하는 방법을 말합니다. 이번 글에서는 Swift를 사용하여 스택(Stack) 자료구조를 직접 구현하는 예제를 알아보겠습니다. 스택은 후입선출(LIFO, Last-In-First-Out)의 원리를 따르는 자료구조로, 데이터를 쌓아 올리듯이 관리하는 구조입니다.

1. 스택(Stack) 개념 이해하기: 스택은 데이터를 저장하는 컨테이너로, 데이터를 삽입(push)하고 추출(pop)할 수 있습니다. 스택의 핵심 개념은 후입선출(LIFO)입니다. 가장 최근에 삽입된 데이터가 가장 먼저 추출되는 특징을 가지고 있습니다.

 

 

2.스택(Stack) 구현하기: 이제 Swift로 스택 자료구조를 구현해보겠습니다. 다음은 Stack 구조체의 기본 형태입니다.

struct Stack<T> {
    private var elements: [T] = []
    
    // 스택이 비어있는지 확인
    var isEmpty: Bool {
        return elements.isEmpty
    }
    
    // 스택에 데이터 추가
    mutating func push(_ element: T) {
        elements.append(element)
    }
    
    // 스택에서 데이터 추출
    mutating func pop() -> T? {
        guard !isEmpty else {
            return nil
        }
        return elements.removeLast()
    }
    
    // 스택의 가장 상단 데이터 반환
    func peek() -> T? {
        return elements.last
    }
    
    // 스택의 크기 반환
    var count: Int {
        return elements.count
    }
}

위 코드에서는 Stack이라는 제네릭(Generic) 구조체를 정의합니다. elements 배열을 사용하여 스택의 데이터를 저장하고, isEmpty, push, pop, peek, count와 같은 기능을 구현합니다.

 

 

3. 스택(Stack) 예제 사용하기: 이제 위에서 구현한 스택을 사용하는 예제를 살펴보겠습니다.

var stack = Stack<Int>()

stack.push(1)
stack.push(2)
stack.push(3)

print(stack.peek()) // 3

print(stack.pop()) // 3
print(stack.pop()) // 2

print(stack.count) // 1
print(stack.isEmpty) // false

위 예제에서는 정수 타입을 저장하는 스택을 생성하고, push 메서드를 사용하여 데이터를 추가합니다. peek 메서드로 스택의 가장 상단 데이터를 확인하고, pop 메서드를 사용하여 데이터를 추출합니다. count와 isEmpty 프로퍼티를 사용하여 스택의 크기와 비어있는지 여부를 확인합니다.

 

결론: 이번 글에서는 Swift를 사용하여 스택(Stack) 자료구조를 구현하는 예제를 살펴보았습니다. 스택은 후입선출(LIFO)의 특성을 가지며, push와 pop을 통해 데이터를 추가하고 추출할 수 있습니다. 이와 같이 직접 자료구조를 구현하면 데이터를 효율적으로 조작하고 관리할 수 있습니다. 앞으로 다른 자료구조를 직접 구현해보면서 Swift의 강력한 기능을 활용해보시기 바랍니다.

728x90
반응형