[백준] 10828번 스택 / Java, Python

Jini·2021년 5월 2일
0

백준

목록 보기
94/226

Baekjoon Online Judge

algorithm practice


- 단계별 문제풀기


18. 스택

스택을 구현하고 사용해 봅시다.




Java / Python


1. 스택

10828번

스택의 개념을 익히고 실습하는 문제



이번 문제는 스택(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())





profile
병아리 개발자 https://jules-jc.tistory.com/

0개의 댓글