Algorithm Problems

[백준][Python] 18258번 큐2, 10866번 덱 - 연결 리스트

WakaraNai 2021. 7. 29. 00:19
728x90
반응형

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

 

18258번: 큐 2

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

www.acmicpc.net

 

 

Python

import sys
input = sys.stdin.readline


class Node:
    def __init__(self, data, link):
        self.data = data
        self.link = link


head = None
tail = None
length = 0

for _ in range(int(input())):
    cmd = input().split()
    if cmd[0][:2] == "pu":
        if head == None:
            head = tail = Node(cmd[1], None)
        else:
            tail.link = Node(cmd[1], None)
            tail = tail.link
        length += 1
    elif cmd[0][:2] == "po":
        if head == None:
            print(-1)
        else:
            print(head.data)
            head = head.link
            if head == None:
                tail = None
            length -= 1
    elif cmd[0][0] == "f":
        print(-1 if head == None else head.data)
    elif cmd[0][0] == "b":
        print(-1 if tail == None else tail.data)
    elif cmd[0][0] == "s":
        print(length)
    elif cmd[0][0] == "e":
        print(1 if head == None else 0)

 

 

 

 

 

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

 

10866번: 덱

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

www.acmicpc.net

 

 

 

 

Python

import sys
input = sys.stdin.readline


class Node:
    def __init__(self, data, link, before):
        self.data = data
        self.link = link
        self.before = before


head = None
tail = None
length = 0


for _ in range(int(input())):
    cmd = input().split()
    if cmd[0][:4] == "push":
        length += 1
        if head == None:
            head = tail = Node(cmd[1], None, None)
        else:
            if cmd[0][5:] == "back":
                tail.link = Node(cmd[1], None, tail)
                tail = tail.link
            elif cmd[0][5:] == "front":
                head.before = Node(cmd[1], head, None)
                head = head.before

    elif cmd[0][:3] == "pop":
        if head == None:
            print(-1)
        else:
            length -= 1
            if cmd[0][4:] == "front":
                print(head.data)
                head = head.link
            elif cmd[0][4:] == "back":
                print(tail.data)
                tail = tail.before
            if length == 0:
                head = tail = None

    elif cmd[0][0] == "f":
        print(-1 if head == None else head.data)
    elif cmd[0][0] == "b":
        print(-1 if tail == None else tail.data)
    elif cmd[0][0] == "s":
        print(length)
    elif cmd[0][0] == "e":
        print(1 if head == None else 0)
728x90
반응형