문제 정보
핵심
스택은 기본적인 자료구조형이고 알고있었던 내용이라 구현하는 것은 쉬웠던 것 같다
구현하는 것에 대한 방식의 차이는 있을 수 있지만 대부분 풀이는 비슷할 것 같다
풀이
import sys
class solv:
def __init__(self):
self.stack = []
def push(self, item):
self.stack.append(item)
def top(self):
if self.empty() == 1: return -1
return self.stack[-1]
def size(self):
return len(self.stack)
def empty(self):
if self.size() > 0: return 0
else: return 1
def pop(self):
if self.empty() == 1:
return -1
return self.stack.pop()
_ = sys.stdin.readline()
input = sys.stdin.read().split('\n')
st = solv()
for str in input:
if len(str.split()) > 1:
st.push(str.split()[1])
if str == 'pop': print(st.pop())
elif str == 'size': print(st.size())
elif str == 'empty': print(st.empty())
elif str == 'top': print(st.top())
N을 나타내는 수는 사실상 남은 모든 문장을 읽어버리고 배열 안의 내용을 iterate 하면 되기 때문에 함수 이름을 사용하지 않고 버리는 값으로 설정하였다
클래스를 지정하고, 해당 클래스에 여러 메서드들을 정의하여 str이 1보다 크면 push, 아니면 각 명령어와 같은지 비교하는 과정을 진행하였다
고찰
3항 연산자
if com[0] == 'pop':
print(queue.pop(0) if queue else -1)
다른 분의 풀이를 보고 위의 내용은 내가 다음에 풀었던 문제인 '큐' 코드의 일부인데
다음과 같이 3항 연산자를 사용하면 코드를 더 간결하게 짤 수 있을 것 같다는 생각을 하였다
댓글