Jupitor's Blog

[Python] 스택, 큐, 더블큐, 괄호 체크, 10진수 -> 2진수, 10진수 -> n진수 본문

IT/알고리즘

[Python] 스택, 큐, 더블큐, 괄호 체크, 10진수 -> 2진수, 10진수 -> n진수

Jupitor6245 2021. 8. 17. 08:07

 

class Stack:

    def __init__(self):

        self.items = []

    def is_empty(self):

        return self.items == []

    def push(self, item):

        self.items.append(item)

    def pop(self):

        return self.items.pop()

    def peek(self):

        return self.items[len(self.items)-1]

    def size(self):

        return len(self.items)



class Queue:

    def __init__(self):

        self.items = []

    def is_empty(self):

        return self.items == []

    def enqueue(self, item):

        self.items.insert(0,item)

    def dequeue(self):

        return self.items.pop()

    def size(self):

        return len(self.items)



class Deque:

    def __init__(self):

        self.items = []

    def is_empty(self):

        return self.items == []

    def add_front(self, item):

        self.items.append(item)

    def add_rear(self, item):

        self.items.insert(0,item)

    def remove_front(self):

        return self.items.pop()

    def remove_rear(self):

        return self.items.pop(0)

    def size(self):

        return len(self.items)



def par_checker(symbol_string):

    s = Stack()

    balanced = True

    i = 0

    current = ""

    while i < len(symbol_string) and balanced:

        sym = symbol_string[i]

        if sym in "({[":

            s.push(sym)

        else:

            if s.is_empty():

                balanced = False

            else:

                current = s.pop()

                if not isMatched(current, sym):

                    balanced = False

                    

        i += 1

 

    if balanced and s.is_empty():

        return True

    else:

        return False

 

def isMatched(open, close) -> bool:

    ol = "({["

    cl = ")}]"

    idx = ol.find(open)

    return cl[idx] == close

    

def decToBi(n) -> str:

    s = Stack()

    while n :

        if n % 2 == 1:

            s.push(1)

        else:

            s.push(0)

        n = n // 2

    r = ""

    while not s.is_empty():

        r += str(s.pop())

    return r

 

def decToBase(n, b) -> str:

    s = Stack()

    digits = "012345689ABCDEF"

    while n:

        s.push(n % b)

        n = n // b

 

    r = ""

    while not s.is_empty():

        r += digits[s.pop()]

    return r

 

 

괄호체크, 10진수 n진수 변환 ----------------------------------------------------------------------