[Java] 백준(Baekjoon) 28278. 스택2

2024. 1. 29. 17:25Algorithm/자료구조

 

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

 

28278번: 스택 2

첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.

www.acmicpc.net

 

 

 


 

package dataStructure;

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

public class Ex28278 {
	static Stack<Integer> stack= new Stack<Integer>();

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
		int n= Integer.parseInt(br.readLine());
		
		StringBuilder sb= new StringBuilder();
		
		for(int i=0;i<n;i++) {
			String s= br.readLine();
			if(s.length()>1) {
				//1
				StringTokenizer st= new StringTokenizer(s);
				int order= Integer.parseInt(st.nextToken()); //1
				int su= Integer.parseInt(st.nextToken()); //넣을 수
				if(order==1) {
					stack.add(su);
				}
			}else {
				//2
				int num= Integer.parseInt(s);
				if(num==2) {
					if(!stack.isEmpty()) {
						sb.append(stack.pop()+"\n");
					}else {
						sb.append("-1\n");
					}
				}else if(num==3) {
					sb.append(stack.size()+"\n");
				}else if(num==4) {
					if(!stack.isEmpty()) {
						sb.append("0\n");
					}else {
						sb.append("1\n");
					}
				}else if(num==5) {
					if(!stack.isEmpty()) {
						sb.append(stack.peek()+"\n");
					}else {
						sb.append("-1\n");
					}
				}
			}
		}
		
		System.out.println(sb.toString().trim());
		
	}

}

 

- Stack 자료구조를 사용하여 구현

 

참고:

https://ittrue.tistory.com/200

 

[Java] 자바 스택(Stack) 클래스 메서드 정리 및 활용

스택이란? 스택은 ‘쌓다.’, ‘쌓이다.’와 같은 뜻을 가진 용어로, 접시를 높이 쌓아 놓은 형태와 비슷한 자료구조이다. 즉, 데이터를 순서대로 쌓는 자료구조이다. 실생활에서 흔히 접할 수

ittrue.tistory.com