본문 바로가기
알고리즘/백준

[백준 10828] 스택 - 자바

by binghe819 2020. 4. 23.

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

 

10828번: 스택

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

www.acmicpc.net


1. 풀이

이 문제는 스택을 구현할 수 있느냐 없느냐를 묻는 문제인 듯하다.

 

자바 Collection에 정의된 스택을 사용해도 되고, 그냥 배열과 size변수를 선언하여 풀어도 될듯하다.

 


2. 코드

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int num = sc.nextInt();
		int size = 0;
		int[] stack = new int[num];
		for(int i = 0; i < num; i++) {
			String input = sc.next();
			
			if(input.equals("push")) {
				size++;
				stack[size] = sc.nextInt();
				
			} else if(input.equals("pop")) {
				if(size == 0)
					System.out.println(-1);
				else {
					System.out.println(stack[size]);
					stack[size] = 0;
					size--;
				}
				
			} else if(input.equals("top")) {
				if(size == 0)
					System.out.println(-1);
				else
					System.out.println(stack[size]);
				
			} else if(input.equals("size")) {
				System.out.println(size);
				
			} else if(input.equals("empty")) {
				if(size == 0)
					System.out.println(1);
				else
					System.out.println(0);
			}
		}
		sc.close();
		return;
	}
}

 

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int num = sc.nextInt();
		Stack<Integer> stack = new Stack<Integer>();
		
		for(int i = 0; i < num; i++) {
			String input = sc.next();
			
			if(input.equals("push")) {
				stack.push(sc.nextInt());
				
			} else if (input.equals("pop")) {
				if(stack.isEmpty())
					System.out.println(-1);
				else
					System.out.println(stack.pop());
				
			} else if (input.equals("top")) {
				if(stack.isEmpty())
					System.out.println(-1);
				else
					System.out.println(stack.peek());
				
			} else if (input.equals("size")) {
				System.out.println(stack.size());
				
			} else if (input.equals("empty")) {
				if(stack.isEmpty())
					System.out.println(1);
				else
					System.out.println(0);
			}
		}
		
		sc.close();
		return;
	}
}

 

 

 

 

 

 

 

'알고리즘 > 백준' 카테고리의 다른 글

[백준 9012] 괄호 - 자바  (0) 2020.04.23
[백준 9093] 단어 뒤집기 - 자바  (0) 2020.04.23
[백준 1924] 2007년  (0) 2020.04.11
[백준 1697] 숨바꼭질 - 자바  (0) 2020.04.05
[백준 1260] DFS와 BFS - 자바  (0) 2020.04.04

댓글