Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Selection Sorting
- 윤성우의 열혈 자료구조
- R
- Graph
- Serialization
- C 언어 코딩 도장
- datastructure
- Algorithm
- s
- Stack
- 윤성우 열혈자료구조
- list 컬렉션
- 알기쉬운 알고리즘
- buffer
- 혼자 공부하는 C언어
- stream
- C programming
- 메모리구조
- insertion sort
- 이것이 자바다
- JSON
- coding test
- 이스케이프 문자
Archives
- Today
- Total
Engineering Note
[BOJ:10828] 스택 본문
it 취업을 위한 알고리즘 문제 풀이
문제
https://www.acmicpc.net/problem/10828
[
10828번: 스택
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
](https://www.acmicpc.net/problem/10828)
코드
import sys
#sys.stdin = open("input.txt","rt")
N = int(sys.stdin.readline())
stack = [None]*10001
top = -1
def Push(data):
global top
global stack
top += 1
stack[top] = data
def Pop():
global top
global stack
if top == -1:
print(-1)
else:
print(stack[top])
top -= 1
def Size():
global top
global stack
print(top + 1)
def Empty():
global top
if top == -1:
print(1)
else:
print(0)
def Top():
global top
global stack
if top == -1:
print(-1)
else:
print(stack[top])
for _ in range(N):
cmd = sys.stdin.readline().split()
if cmd[0] == "push":
Push(cmd[1])
elif cmd[0] == "pop":
Pop()
elif cmd[0] == "size":
Size()
elif cmd[0] == "empty":
Empty()
elif cmd[0] == "top":
Top()
문제해결방법
- 문제는 입력받는 문자열에 따라 문제에 주어진 명령을 수행하는 프로그램을 작성하는 것이다.
- 문제에 주어진 명령은 스택 자료구조를 구현하는 명령들만 입력된다.
- 문자를 입력받아 whitespace를 기준으로 나누어 리스트로만드는 split 함수를 통해 cmd에 저장했다.
- 입력된 문자들이 리스트에 저장 될때 받드시 0번 인덱스는 명령어이고 push는 명령어는 저장될 데이터가 같이 입력되므로 1번인덱스에도 값이 저장된다.
- 이를 활용해 기준을 나누어 문제의 조건에 맞게 함수를 만들어 구현해 주면 된다.
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ:18258] 큐2 (0) | 2021.07.24 |
---|---|
[BOJ:10951] A+B - 4 (0) | 2021.07.23 |
[BOJ:4485] 녹색 옷 입은 애가 젤다지? (0) | 2021.07.03 |
[BOJ:2753] 윤년 (0) | 2021.05.27 |
[BOJ:16236] 아기상어 (0) | 2021.05.24 |
Comments