問題3.5
頭の体操って感じ。老人のボケ防止に、これ位の簡単なアルゴリズムの問題っていいと思う。笑。
問題
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()