백준(JAVA) 풀이/자료 구조

백준(JAVA) 10828번 스택 풀이

개발윗미 2022. 8. 13. 09:30

Java으로 구현한 10828번 스택 문제 풀이입니다.

 

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

 

10828번: 스택

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

www.acmicpc.net


import java.util.*;
import java.io.*;

public class Main {
	static List<Integer> data;
	
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		
		data = new ArrayList<Integer>();
		StringTokenizer st;
		for (int i=0; i<n; i++) {
			st = new StringTokenizer(br.readLine());
			String state = st.nextToken();
			
			if (state.equals("push")) { // push X
				int num = Integer.parseInt(st.nextToken());
				data.add(num);
			} else if (state.equals("pop")) { // pop
				if (data.size() == 0)
					System.out.println(-1);
				else {
					int result = data.remove(data.size() - 1);
					System.out.println(result);
				}
			} else if (state.equals("size")) { // size
				System.out.println(data.size());
			} else if (state.equals("empty")) { // empty
				if (data.size() == 0)
					System.out.println(1);
				else
					System.out.println(0);
			} else if (state.equals("top")) { // top
				if (data.size() == 0)
					System.out.println(-1);
				else {
					int result = data.get(data.size()-1);
					System.out.println(result);
				}
			}
		}
	}
}

 

1. 입력받은 state 값이 "push"일 경우 아래와 같은 작업을 수행한다.

  - 정수를 하나 입력받아 num에 저장하고 그 값을 data 리스트에 추가한다.

 

2. 입력받은 state 값이 "pop"일 경우 아래와 같은 작업을 수행한다.

  - 만약 data 리스트의 size()가 0일 경우 즉, 값이 없을 경우 -1을 출력한다.

  - 값이 존재할 경우 가장 마지막에 위치하고 있는 값을 꺼내 출력한다.

 

3. 입력받은 state 값이 "size"일 경우 data 리스트의 길이를 출력한다.

 

4. 입력받은 state 값이 "empty"일 경우 아래와 같은 작업을 수행한다.

  - 만약 data 리스트의 size()가 0일 경우 즉, 값이 없을 경우 1을 출력한다.

  - data 리스트의 size()가 0이 아닐 경우 즉, 값이 존재할 경우 0을 출력한다.

 

5. 입력받은 state 값이 "top"일 경우 아래와 같은 작업을 수행한다.

  - 만약 data 리스트의 size()가 0일 경우 -1을 출력한다.

  - 그렂히 않다면 가장 마지막에 있는 요소를 가져와 출력한다.