[백준] 10828번 스택 / Java, Python
Baekjoon Online Judge
algorithm practice
- 단계별 문제풀기
18. 스택
스택을 구현하고 사용해 봅시다.
스택을 구현하고 사용해 봅시다.
Java / Python
1. 스택
스택의 개념을 익히고 실습하는 문제
이번 문제는 스택(Stack)을 간단하게 구현해보는 문제입니다. 스택은 리스트의 한쪽 끝에서 수행 되는 선형 리스트 한가지 형태입니다. 스택은 LIFO(Last in First out)구조로 마지막으로 입력된 자료가 제일 먼저 삭제 하는 방식입니다.
시간 제한을 주의해야 합니다..!
- Java
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];
}
}
}
- Python
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())
Author And Source
이 문제에 관하여([백준] 10828번 스택 / Java, Python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jini_eun/백준-10828번-스택-Java-Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)