백준

[백준] 10828번 : 스택 (JAVA)

lucy1215 2023. 1. 9. 11:59
728x90
반응형

바로 전에 스택을 공부한 뒤, 그 내용을 바탕으로 스택 문제 1번인 10828번 : 스택 문제를 풀었다.

 

스택에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다.

https://lucy1215.tistory.com/17

 

[자료구조] 스택 (Stack)

🚩스택 (Stack)의 개념 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 형식의 자료 구조 ❓스택 (Stack)의 특징 1. 먼저 들어간 자료가 나중에 나옴. LIFO구조 2. 시스템 해킹에서 버퍼오버

lucy1215.tistory.com

 


<문제>

 

<문제 해석>

스택을 이용하여 

  • push (number)  -> stack에 number를 push
  • pop -> stack의 맨 위 수를 pop / 없을 경우 -1
  • size -> stack의 size 출력
  • empty -> stack이 비어있는지 여부 (비어있으면 1, 아니면 0)
  • top -> stack의 맨 위 수를 출력 / 없을경우 -1

에 맞게 출력하라.

 

 

 

 

<문제 해결>

스택을 공부한 뒤, 푸는 문제라 어려움은 없었다.

 

 

입력받은 명령 (push, pop, size, empty, top) 에 맞게

if-else 조건문을 작성하여

실행하면 된다.

 

 

 

 

<코드>

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Stack;

public class Main {	

	static int n;
	static Stack<Integer> stack = new Stack<>();

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));		
		n = Integer.parseInt(br.readLine());
		
		for(int i=0;i<n;i++) {
			String str = br.readLine();
			run(str);
		}
	}
	
	static void run(String str) {
		
		if(str.equals("top")) {
			if(stack.size() == 0) {
				System.out.println("-1");
			}else {
				System.out.println(stack.peek());
			}
		}
		
		else if(str.equals("size")) {
			System.out.println(stack.size());
		}
		
		else if(str.equals("empty")) {
			if(stack.empty() == true) {
				System.out.println("1");
			}else {
				System.out.println("0");
			}
		}
		
		else if(str.equals("pop")) {
			if(stack.size() == 0) {
				System.out.println("-1");
			}else {
				System.out.println(stack.peek());
				stack.pop();
			}
		}
		
		else if(str.contains("push")) {
			String spt[] = str.split(" ");
			stack.push(Integer.parseInt(spt[1]));
			
		}
	}
	
}

 

 


https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

반응형