[アルゴリズム]伯俊10828号スタック(Python)


白駿#10828


問題のショートカット

質問する


整数を格納するスタックを実装し、入力としてのコマンドを処理するプログラムを作成します.
命令は全部で5種類ある.
push X:整数Xをスタックに入れる演算.
pop:スタックの一番上の整数を除去し、出力します.スタックに整数がない場合は、-1が出力されます.
size:スタック内の整数の個数を出力します.
空:スタックが空の場合、1または0が出力されます.
top:スタックの一番上の整数を出力します.スタックに整数がない場合は、-1が出力されます.

I/Oルール


1.入力
  • 第1行で与えられる命令数N(1≦N≦10000).2行目からN行目までそれぞれ1つのコマンドがあります.与えられた整数は1以上であり、100000以下である.問題にない命令はない
    2.出力
  • を出力する必要があるコマンドが発行されるたびに、各行に1つのコマンドが出力されます.
  • 質問へのアクセス


    この問題はpush,pop,size,empty,topで解くことができる.
    入力値の最初に総入力個数が現れ、入力個数はfor文を用いて順次処理される.そしてif文で値を計算して個々の出力を実現することで終了~!

    問題解決(Python)

    
    import sys
    
    T = int(sys.stdin.readline())
    stack = []
    
    for i in range(T):
      word = sys.stdin.readline().split(" ")
      order = word[0]
    
      if order == "push":
        value = word[1]
        stack.append[value]
      elif order == "pop":
        if len(stack) == 0:
          print(-1)
        else:
          print(stack.pop())
      elif order == "size":
        print(len(stack))
      elif order == "empty":
        if len(stack) == 0:
          print(-1)
        else:
          print(0)
      elif order == "top":
        if len(stack) == 0:
          print(-1)
        else:
          print(stack(-1))