(Swift) LeetCode 225. Implement Stack using Queues

SteadySlower·2024년 10월 15일
0

Coding Test

목록 보기
305/305

LeetCode - The World's Leading Online Programming Learning Platform

문제 풀이 아이디어

큐로 스택을 구현하는 문제이다. stack은 후입 선출의 구조이고 queue는 선입 선출의 구조이기 때문에 queue로 stack을 구현하기 위해서는 queue에 push할 때 push한 데이터가 다음에 pop할 때 바로 나올 수 있도록 queue의 맨앞으로 보내주는 작업을 해야한다.

코드

// Swift로 Queue 구현
struct Queue {
    var index = 0
    var data = [Int]()
    
    mutating func push(_ value: Int) {
        data.append(value)
    }
    
    mutating func pop() -> Int {
        defer {
            index += 1
        }
        return data[index]
    }
    
    var top: Int {
        data[index]
    }
    
    var count: Int {
        data.count - index
    }
}

class MyStack {
    
    var queue = Queue()

    init() {
        
    }
    
    func push(_ x: Int) {
        queue.push(x)
        // queue에 push하고 난 이후에 방금 push된 element를 맨앞으로 보내는 작업을 한다.
        for _ in 0..<(queue.count - 1) {
            queue.push(queue.pop())
        }
    }
    
    func pop() -> Int {
        return queue.pop()
    }
    
    func top() -> Int {
        return queue.top
    }
    
    func empty() -> Bool {
        return queue.count == 0
    }
}
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글