Algorithm Problems

[백준] [Python] 10828번 스택, 10845번 큐, 10866번 덱 - 기초

WakaraNai 2021. 4. 24. 22:41
728x90
반응형

www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

Python

import sys

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

stack = []
for _ in range(int(sys.stdin.readline())):
    command = sys.stdin.readline().split()
    if command[0] == "push":
        stack.append(int(command[1]))
    elif command[0] == "top":
        print( -1 if stack == [] else stack[-1])
    elif command[0] == "size":
        print(len(stack))
    elif command[0] == "empty":
        print( 1 if stack == [] else 0)
    elif command[0] == "pop":
        if stack == []:
            print(-1)
        else:
            print(stack[-1])
            stack.pop()

 

 

 

 

 

www.acmicpc.net/problem/10845

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

Python

import sys
q = []
for _ in range(int(sys.stdin.readline())):
    command = sys.stdin.readline().split()
    if command[0] == "push":
        q.append(int(command[1]))
    elif command[0] == "pop":
        if q == []:
            print(-1)
        else:
            print(q[0])
            del q[0]
    elif command[0] == "size":
        print(len(q))
    elif command[0] == "empty":
        print(1 if q==[] else 0)
    elif command[0] == "front":
        print(q[0] if q!=[] else -1)
    elif command[0] == "back":
        print(q[-1] if q!=[] else -1)
   

 

 

 

 

www.acmicpc.net/problem/10866

 

10866번: 덱

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

Python

import sys
dq = []
for _ in range(int(sys.stdin.readline())):
    cmd = sys.stdin.readline().rstrip()
    #print(cmd,dq)
    if cmd == "pop_front":
        if len(dq)==0: print(-1)
        else: print(dq.pop(0))
        
    elif cmd == "pop_back":
        print(-1 if len(dq)==0 else dq.pop() )
    elif cmd == "size":
        print(len(dq))
    elif cmd == "empty":
        print(1 if len(dq)==0 else 0)
    elif cmd == "front":
        print(-1 if len(dq)==0 else dq[0] )
    elif cmd == "back":
        print(-1 if len(dq)==0 else dq[-1] )
    else:
        cmd = cmd.split()
        if cmd[0] == "push_front":
            dq.insert(0, int(cmd[1]))
        elif cmd[0] == "push_back":
            dq.append(int(cmd[1])
728x90
반응형