일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SWEA
- DFS
- javascript
- front-end
- 다이나믹 프로그래밍
- 구현
- inflearn
- 프로그래머스
- java
- 정렬
- Spring
- BFS
- 순환
- 알고리즘
- 해슁
- html
- DP
- codecademy
- Kotlin
- CleanCode
- Color
- algorithm
- 코딩테스트
- 검색트리
- android
- Web
- SQL
- 클린코드
- CSS
- 자바
- Today
- Total
깡뇽
[백준] 10828번 스택 파이썬 본문
Siver 4 레벨에 해당하는 문제이다. 금방끝내고 싶어서 이 문제를 골랐는데 이상하게 더 많은 틀렸습니다를 만났다...
자료 구조 중에서 스택 구조를 경험해 볼 수 있는 문제이다. push를 하면 스택에 값을 넣고, pop는 스택의 맨 윗 값을 제거하며 반환하고, size는 스택의 크기를 알려주고, empty는 스택이 비워짐을 확인해주고, top은 스택의 맨 윗 값을 반환한다.
10828번 스택 풀이
[시도n] pypy3 맞았습니다!!
import sys
n = int(input())
stack = []
for i in range(n):
say = sys.stdin.readline().rstrip()
if 'push' in say:
num = say.split()
stack.append(num[-1])
elif say == 'pop':
if len(stack) == 0:
print(-1)
else:
print(stack[-1])
stack.pop()
elif say == 'size':
print(len(stack))
elif say == 'empty':
if len(stack) == 0:
print(1)
else:
print(0)
elif say == 'top':
if len(stack) == 0:
print(-1)
else:
print(stack[-1])
1) 우선 디버깅을 위해 print해둔 부분을 지우지 않아서 '출력 초과' 를 만났다. (디버깅 출력 좀 잘 확인하자!!)
2) 시간 초과를 방지하기 위해서 input()이 아닌 sys.stdin.readline()을 사용해야 하는 문제였고, 뒤에 rstrip()을 붙여줘야 엔터값까지 입력되는 것을 막을 수 있다. strip(), lstrip(), rstrip()은 문자열에서 양쪽, 왼쪽, 오른쪽의 공백을 삭제해 준다. strip('0')과 같이 인자를 넣으면 다른 문자가 나올 때까지 해당 문자는 다 지운다. '00happy1000'을 rstrip('0')하면 '00happy1'이 된다.
3) 맨 처음에 push를 할 때에 인덱스를 사용해서 say에 push 1이 입력되면 say[-1]을 넣도록 구현했었는데 이렇게 되면 123과 같은 한자리 이상의 숫자는 제대로 넣어지지 않는다. 위의 코드처럼 split()을 사용해서 해당 값만 분류해서 스택에 넣어주거나 인덱싱을 사용할 것이라면 say[5:]로 해줘야 한다.
4) 파이썬 list는 pop() 함수를 지원한다. 리스트의 맨 끝 값을 제거한다.
5) else의 들여쓰기를 잘못해주어 '컴파일 에러'도 만났는데 백준에서 컴파일 에러는 클릭하면 무엇이 문제인지 알려주더라!
6) if elif else 문에서 else를 꼭 써줘야 하는 것은 아니다. 당연한 말이지만 else: continue > else : break > else없음 순서로 실행 시간이 적게 나온다.
#1
#2
'Algorithm > BAEKJOON' 카테고리의 다른 글
[백준] 11053번 가장 긴 증가하는 부분 수열 파이썬 (0) | 2022.02.07 |
---|---|
[백준] 10845번 큐 파이썬 (0) | 2022.02.05 |
[백준] 1463번 1로 만들기 파이썬 (0) | 2022.02.02 |
[백준] 1978번 소수 찾기 파이썬 (0) | 2022.02.01 |
[백준] 11650번 좌표 정렬하기 파이썬 (0) | 2022.01.28 |