백준
[백준] 10828번 : 스택 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 7. 2. 16:42
728x90
반응형
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 sys 라이브러리를 불러온다. import sys
- 전체 명령어 수를 입력받는다. N = int(sys.stdin.readline().rstrip())
- 명령어 수행의 결과를 나타내줄 리스트를 생성한다. li = list()
- 전체 명령어 수만큼 반복한다. for _ in range(N)
- 명령어를 입력받는다. Str = sys.stdin.readline().rstrip()
- 만약 입력받은 문자열에 공백이 있다면 if (' ' in Str)
- 명령어 이외에도 값이 있다는 의미이므로 단어와 값으로 구분해 준다. word, num = map(str, Str.split())
- 반면에 명령어만 존재한다면 else
- 명령어만 단어로 저장해 준다. word = Str
- 만약 단어가 push일 경우 값을 정수형으로 바꿔 리스트에 추가해 준다. if (word == 'push'): li.append(int(num))
- 만약 단어가 pop일 경우 elif (word == 'pop')
- 리스트가 공백이면 제거할 원소가 없으므로 -1을 출력한다. if (len(li) == 0): print(-1)
- 리스트가 공백이 아니라면 리스트의 마지막 원소를 하나 제거하고 그 값을 출력한다. else: print(li.pop())
- 만약 단어가 size일 경우 리스트의 원소 개수를 출력한다. elif (word == 'size'): print(len(li))
- 만약 단어가 empty일 경우 elif (word == 'empty')
- 리스트가 공백이면 1을 출력한다. if (len(li) == 0): print(1)
- 리스트가 공백이 아니라면 0을 출력한다. else: print(0)
- 만약 단어가 top일 경우 elif (word == 'top')
- 리스트가 공백이면 -1을 출력한다. if (len(li) == 0): print(-1)
- 리스트가 공백이 아니라면 리스트의 제일 마지막 원소를 출력한다. else: print(li[len(li) - 1])
반응형
3. 소스코드
import sys
N = int(sys.stdin.readline().rstrip())
li = list()
for _ in range(N):
Str = sys.stdin.readline().rstrip()
if (' ' in Str):
word, num = map(str, Str.split())
else:
word = Str
if (word == 'push'):
li.append(int(num))
elif (word == 'pop'):
if (len(li) == 0):
print(-1)
else:
print(li.pop())
elif (word == 'size'):
print(len(li))
elif (word == 'empty'):
if (len(li) == 0):
print(1)
else:
print(0)
elif (word == 'top'):
if (len(li) == 0):
print(-1)
else:
print(li[len(li) - 1])
728x90
반응형