問題3.5

http://www.amazon.co.jp/dp/4839942390


頭の体操って感じ。老人のボケ防止に、これ位の簡単なアルゴリズムの問題っていいと思う。笑。

問題

MyQueueというクラス名で、2つのスタックを用いてキューを実装してください。

#encoding: utf-8


class MyQueue():
    '''
    2つのスタックで構成されるキュー。
    >>> my_queue = MyQueue()
    >>> my_queue.push(0)
    >>> my_queue.push(1)
    >>> my_queue.push(2)
    >>> my_queue.pop()
    0
    >>> my_queue.pop()
    1
    >>> my_queue.pop()
    2
    >>> my_queue.pop()
    >>> my_queue.push(999)
    >>> my_queue.pop()
    999
    '''
    def __init__(self):
        # pushされたらとりあえず格納するキュー
        self.push_queue = []
        # push_queueを逆順にしてpop_queueに格納して使用
        self.pop_queue = []

    def push(self, num):
        self.push_queue.append(num)

    def pop(self):
        # キューが空なら何もしない
        if len(self.push_queue) != 0 or len(self.pop_queue) != 0:
            # push_queueに格納したデータを逆順にして、pop_queueに格納する
            for counter in range(0, len(self.push_queue)):
                self.pop_queue.append(self.push_queue.pop())
            return self.pop_queue.pop()


def _test():
    import doctest
    doctest.testmod()


if __name__ == '__main__':
    _test()