백준 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())
99클럽 코테 스터디 14일차 TIL + 오늘의 학습 키워드 : 큐 (0) | 2024.11.10 |
---|---|
[챌린지]99클럽 코테 스터디 13일차 TIL + 오늘의 학습 키워드 : 스택 (6) | 2024.11.09 |
99클럽 코테 스터디 11일차 TIL + 오늘의 학습 키워드 : 스택 (1) | 2024.11.08 |
99클럽 코테 스터디 10일차 TIL + 오늘의 학습 키워드 : 해시 (4) | 2024.11.06 |
99클럽 코테 스터디 9일차 TIL + 오늘의 학습 키워드 : 해시 (5) | 2024.11.05 |