스택을 구현하고 사용해 봅시다.
Java / Python
스택의 개념을 익히고 실습하는 문제
이번 문제는 스택(Stack)을 간단하게 구현해보는 문제입니다. 스택은 리스트의 한쪽 끝에서 수행 되는 선형 리스트 한가지 형태입니다. 스택은 LIFO(Last in First out)구조로 마지막으로 입력된 자료가 제일 먼저 삭제 하는 방식입니다.
시간 제한을 주의해야 합니다..!
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static int[] stack;
public static int size = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
stack = new int[N];
while (N-- > 0) {
st = new StringTokenizer(br.readLine(), " ");
switch (st.nextToken()) {
case "push":
push(Integer.parseInt(st.nextToken()));
break;
case "pop":
sb.append(pop()).append('\n');
break;
case "size":
sb.append(size()).append('\n');
break;
case "empty":
sb.append(empty()).append('\n');
break;
case "top":
sb.append(top()).append('\n');
break;
}
}
System.out.println(sb);
}
public static void push(int item) {
stack[size] = item; // 스택에 item을 입력, size 1 증가
size++;
}
public static int pop() { // 가장 위에 있는 정수 빼고 출력
if(size == 0) {
return -1;
}
else {
int res = stack[size - 1];
stack[size - 1] = 0;
size--;
return res;
}
}
public static int size() { // 요소의 개수를 반환하는 함수
return size;
}
public static int empty() { // 스택이 비었는지 확인
if(size == 0) {
return 1; // 비었으면 return 1
}
else {
return 0;
}
}
public static int top() { // 스택의 최상단 요소
if(size == 0) {
return -1;
}
else {
return stack[size - 1];
}
}
}
import sys
def push(x): # 정수 스택에 넣는 함수
stack.append(x)
def pop(): # 스택에서 가장 위 정수 제거, 출력
if(not stack):
return -1
else:
return stack.pop()
def size(): # 스택 속 정수 개수
return len(stack)
def empty(): # 스택이 비어있는지 확인
return 0 if stack else 1
def top(): # 스택의 최상단 요소 출력
return stack[-1] if stack else -1
N = int(sys.stdin.readline().rstrip())
stack = []
for _ in range(N):
input_str = sys.stdin.readline().rstrip().split()
order = input_str[0]
if order == "push":
push(input_str[1])
elif order == "pop":
print(pop())
elif order == "size":
print(size())
elif order == "empty":
print(empty())
elif order == "top":
print(top())