[백준]10828_스택(python)

차보경·2022년 11월 16일
0

백준

목록 보기
17/20
post-thumbnail

문제

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

코드

1차 코드 : class로 구현 (런타임 에러 (ValueError))

class stack:
    def __init__(self): # stack list 생성성
        self.items = []
    def push(self, x):
        self.items.append(x)
    def pop(self):
        print(self.items.pop() if len(self.items) != 0 else -1)
    def size(self):
        print(len(self.items))
    def empty(self):
        print(0 if len(self.items) == 0 else 1)
    def top(self):
        print(self.items[-1] if len(self.items) != 0 else -1)
        
stack = stack()
for _ in range(int(input())):
    line = input().split('')
    if line[0] == 'push':
        stack.push(line[1])
    elif line[0] == 'pop':
        stack.pop()
    elif line[0] == 'size':
        stack.size()
    elif line[0] == 'empty':
        stack.empty()
    elif line[0] == 'top':
        stack.top()
    else:
        print('뭐야 잘못들어옴')

2차 코드 (OK)

import sys
N = int(sys.stdin.readline())
stack = []
for _ in range(N):
    line = sys.stdin.readline().split()
    if line[0] == 'push':
        stack.append(line[1])
    elif line[0] == 'pop':
        print(stack.pop() if len(stack) != 0 else -1)
    elif line[0] == 'size':
        print(len(stack))
    elif line[0] == 'empty':
        print(0 if stack else 1)
        #어떤 분은 print(1 if stack else 0) 이런식으로 함
    elif line[0] == 'top':
        print(stack[-1] if stack else -1)
    else:
        print('뭐야 잘못들어옴')

3차 코드(1차코드수정)

import sys
class stack:
    def __init__(self): # stack list 생성성
        self.items = []
    def push(self, x):
        self.items.append(x)
    def pop(self):
        print(self.items.pop() if len(self.items) != 0 else -1)
    def size(self):
        print(len(self.items))
    def empty(self):
        print(1 if len(self.items) == 0 else 0)
    def top(self):
        print(self.items[-1] if len(self.items) != 0 else -1)
        
stack = stack()
N = int(sys.stdin.readline())
for _ in range(N):
    line = sys.stdin.readline().split()
    if line[0] == 'push':
        stack.push(line[1])
    elif line[0] == 'pop':
        stack.pop()
    elif line[0] == 'size':
        stack.size()
    elif line[0] == 'empty':
        stack.empty()
    elif line[0] == 'top':
        stack.top()
    else:
        print('뭐야 잘못들어옴')

풀이

  • class, 그냥 2개로 나눠서 풀어봄
  • 처음에 런타임에러는 input()써서 문제였음
  • 한줄한줄 받을 땐 sys를 쓰자

참고

입출력 속도 비교 : sys.stdin.readline > raw_input() > input()

profile
차보의 Data Engineer 도전기♥ (근데 기록을 곁들인)

0개의 댓글