상세 컨텐츠

본문 제목

99클럽 코테 스터디 12일차 TIL + 오늘의 학습 키워드 : 스택

본문

728x90
반응형

백준 10828번 _ 스택 

class Stack:
    def __init__(self):
        self.stack = []

    def push(self, x):
        self.stack.append(x)

    def pop(self):
        if self.stack:
            return self.stack.pop()
        else:
            return -1

    def size(self):
        return len(self.stack)

    def empty(self):
        return 1 if not self.stack else 0

    def top(self):
        if self.stack:
            return self.stack[-1]
        else:
            return -1

import sys

input = sys.stdin.read
data = input().strip().splitlines()

stack = Stack()

for command in data:
    if command.startswith("push"):
        _, x = command.split()
        stack.push(int(x))
    elif command == "pop":
        print(stack.pop())
    elif command == "size":
        print(stack.size())
    elif command == "empty":
        print(stack.empty())
    elif command == "top":
        print(stack.top())

1.  Stack 클래스

:__init__ 메서드: 클래스의 인스턴스가 생성될 때 호출됩니다. 여기서는 빈 리스트 self.stack을 생성하여 스택을 초기화합니다.

class Stack:
    def __init__(self):
        self.stack = []

2. Push메서드

: push 메서드: 스택의 가장 위에 정수 x를 추가하는 기능을 합니다. append 메서드를 사용하여 리스트의 끝에 x를 추가합니다.

def push(self, x):
    self.stack.append(x)

3. Pop메서드

:pop 메서드: 스택의 가장 위에 있는 정수를 제거하고 그 값을 반환합니다.
if self.stack: 조건을 통해 스택이 비어있지 않은지 확인하고, 비어있지 않으면 pop 메서드로 가장 위의 요소를 제거하고 반환합니다.
만약 스택이 비어있다면 -1을 반환합니다.

def pop(self):
    if self.stack:
        return self.stack.pop()
    else:
        return -1

4. Size메서드

: size 메서드: 현재 스택에 저장된 정수의 개수를 반환합니다. len 함수를 사용하여 self.stack의 길이를 계산합니다.

def size(self):
    return len(self.stack)

 

 

5. Empty메서드 

:empty 메서드: 스택이 비어있으면 1, 아니면 0을 반환합니다. not self.stack으로 스택이 비어있는지를 확인하여 조건문을 사용합니다.

 

def empty(self):
    return 1 if not self.stack else 0

6. Top메서드

:top 메서드: 스택의 가장 위에 있는 정수를 반환합니다.
스택이 비어있지 않으면 self.stack[-1]로 가장 최근에 추가된 요소를 반환합니다.
스택이 비어있다면 -1을 반환합니다.

def top(self):
    if self.stack:
        return self.stack[-1]
    else:
        return -1

7. 명령 처리 부분

:입력 처리: sys.stdin.read()를 사용하여 모든 입력을 읽어들입니다. strip()과 splitlines()를 통해 각 줄을 리스트로 변환합니다.
명령어 처리: 각 명령을 반복하면서 해당 명령에 맞는 메서드를 호출합니다.
push X 명령은 split()으로 X를 추출한 후 push 메서드를 호출합니다.
나머지 명령들(pop, size, empty, top)은 해당 메서드를 호출하고 결과를 출력합니다.

import sys

input = sys.stdin.read
data = input().strip().splitlines()

stack = Stack()

for command in data:
    if command.startswith("push"):
        _, x = command.split()
        stack.push(int(x))
    elif command == "pop":
        print(stack.pop())
    elif command == "size":
        print(stack.size())
    elif command == "empty":
        print(stack.empty())
    elif command == "top":
        print(stack.top())

 

728x90
반응형

관련글 더보기