Python


https://www.acmicpc.net/problem/10866

🐒 デッキ


整数を格納するDequeを実行し、入力としてのコマンドを処理するプログラムを作成します.
命令は全部で8条ある.
push_front X: 정수 X를 덱의 앞에 넣는다.
push_back X: 정수 X를 덱의 뒤에 넣는다.
pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
size: 덱에 들어있는 정수의 개수를 출력한다.
empty: 덱이 비어있으면 1을, 아니면 0을 출력한다.
front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
back: 덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.

  • 1行目に与えられるコマンド数N(1≦N≦10000).2行目からN行目までそれぞれ1つのコマンドがあります.与えられた整数は1以上であり、100000以下である.問題にない命令はない.

  • 出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.
  • 入力例
    15
    push_back 1
    push_front 2
    front
    back
    size
    empty
    pop_front
    pop_back
    pop_front
    size
    empty
    pop_back
    push_front 3
    empty
    front
    
    出力例
    2
    1
    2
    0
    2
    1
    -1
    0
    1
    -1
    0
    3
    

    私の草

    import sys
    from collections import deque
    
    n = int(input())
    
    deque1 = deque() 
    
    for _ in range(n):
        command = sys.stdin.readline().split()
        if command[0] == 'push_front':
            deque1.appendleft(command[1])
        if command[0] == 'push_back':
            deque1.append(command[1])
        if command[0] == 'pop_front':
            if len(deque1) == 0:
                print(-1)
            else:
                print(deque1.popleft())
        if command[0] == 'pop_back':
            if len(deque1) == 0:
                print(-1)
            else:
                print(deque1.pop())
        if command[0] == 'size':
            print(len(deque1))
        if command[0] == 'empty':
            if len(deque1) == 0:
                print(1)
            else:
                print(0)
        if command[0] == 'front':
            if len(deque1) == 0:
                print(-1)
            else:
                print(deque1[0])
        if command[0] == 'back':
            if len(deque1) == 0:
                print(-1)
            else:
                print(deque1[-1])
    

    これは18分かかる問題です.
    最初のコミット時間は15分くらいでしたが、実行中にエラーが発生しました.
    繰り返し文にsysと入力します.stdin.readline()に変更しなかったことを思い出しました.
    再提出しましたが、また間違いました.
    何かして、インデックスが空だったら印刷(-1)するのですが、いくつか書き忘れてしまいました.
    直してくれて、答えは正しい!
    質問はデックスキルが得意かどうかを聞くようです.
    以前の問題ではdequeはすでに使われており,実現は難しくない.