본문 바로가기
Problem Solving/Baekjoon

[백준] 10828 스택 - Data Structure / Java

by graycode 2022. 6. 12.

 문제 링크

 

10828번: 스택

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

www.acmicpc.net

 

 풀이 과정

Stack(LIFO) 자료구조에 관련된 기본적인 동작들을 구현하는 문제.

 

입력받은 명령어를 sprit 함수로 comm 배열의 0번째 인덱스에 저장시키고

push 할 값은 1번째 인덱스로써 스택에 삽입하며,

 

각각의 입력받은 명령어를 스택 자료구조의 명령어에 대입시켜 구현하여 정답을 출력한다.

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int n = Integer.parseInt(br.readLine());
		Stack<Integer> stk = new Stack<>();
		
		for (int i = 0; i < n; i++) {
			String[] comm = br.readLine().split(" ");
			
			if (comm[0].equals("push"))
				stk.push(Integer.parseInt(comm[1]));
			if (comm[0].equals("pop"))
				if (stk.empty())
					bw.write(-1 + "\n");
				else
					bw.write(stk.pop() + "\n");
			
			if (comm[0].equals("size"))
				bw.write(stk.size() + "\n");
			if (comm[0].equals("empty"))
				if (stk.empty())
					bw.write(1 + "\n");
				else
					bw.write(0 + "\n");
			
			if (comm[0].equals("top"))
				if (stk.empty())
					bw.write(-1 + "\n");
				else
					bw.write(stk.peek() + "\n");
		}

		bw.flush();
	}

}

댓글