언어: python
번호: 10828
제목: 스택
등급: 실버 4
풀이 과정:
명령의 수 n을 입력받고, n번 명령을 입력 받아 if문을 사용해 명령에 따라 출력한다.
잘못된 코드:
n = int(input())
stack = []
for i in range(n):
order = input().split()
if order[0]=='push':
stack.append(order[1])
elif order[0]== 'pop':
if len(stack)==0:
print(-1)
else:
print(stack[-1])
stack.remove(stack[-1])
elif order[0]=='size':
print(len(stack))
elif order[0]=='empty':
if len(stack)==0:
print(1)
else:
print(0)
elif order[0]=='top':
if len(stack)==0:
print(-1)
else:
print(stack[-1])
고친 코드:
import sys
input = sys.stdin.readline
n = int(input())
stack = []
for i in range(n):
order = input().split()
if order[0]=='push':
stack.append(order[1])
elif order[0]== 'pop':
if len(stack)==0:
print(-1)
else:
print(stack.pop())
elif order[0]=='size':
print(len(stack))
elif order[0]=='empty':
if len(stack)==0:
print(1)
else:
print(0)
elif order[0]=='top':
if len(stack)==0:
print(-1)
else:
print(stack[-1])
고친 점:
1. 시간 초과로 input = sys.stdin.readline 을 추가했다.
2. remove로 pop을 구현하려 했는데 remove는 앞에서부터 요소를 제거하는거라 에러가 떴다. pop() 함수를 사용했다.
'BOJ' 카테고리의 다른 글
[백준/BOJ] python 1406번 에디터 (0) | 2023.08.10 |
---|---|
[백준/BOJ] python 9093번 단어 뒤집기 (0) | 2023.07.30 |
[백준/BOJ] python 5800번 성적 통계 (0) | 2023.02.20 |
[백준/BOJ] python 2921번 도미노 (0) | 2023.02.06 |
[백준/BOJ] python 1149번 RGB거리 (0) | 2023.02.03 |