[백준] 10828 스택

차누·2024년 3월 31일
0

문제

실버4 클래스2 문제이다

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

풀이방법

1.명령어 수 입렵
2. 명령어 입력
3. 명령어 기능구현
4. 출력

풀이과정

  1. 메모리 소모를 줄이고 속도를 높이기 위해 BufferedReader 사용
  2. 명령어 수 입력 - Integer.parseInt로 정수형 변환
  3. 명령어 입력 String 배열로 받아 명령어(문자열)은 [0] push의 경우
    입력값이 하나 더 있기 때문에 [1]에 저장
  4. if로 String 배열의 [0]의 equals 매소드로 일치 하면 해당 기능 구현 했다
  5. 출력 - 각 케이스마다 System.out.println() 메소드로 출력을 했지만
    틀렸습니다로 나와 StringBuilder()를 사용해서 전체 출력
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Stack;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		
		Stack<Integer> stack = new Stack<Integer>();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int num = Integer.parseInt(br.readLine());
		
		for(int i = 0; i < num; i++) {
			
			String [] arr_str = br.readLine().split(" ");
			
			//push 일때
			if(arr_str[0].equals("push")) {
				int data = Integer.parseInt(arr_str[1]);
				stack.push(data);
			}
			
			else if(arr_str[0].equals("top")) {
				
				if(!stack.isEmpty()) {
					sb.append(stack.peek() + "\n");
				}
				
				else {
					
					sb.append("-1" + "\n");
				}
			}
			
			else if(arr_str[0].equals("pop")) {
				
				if(!stack.isEmpty()) {
					sb.append(stack.pop() + "\n");
				}
				
				else {
					sb.append("-1" + "\n");
				}
			}
			
			else if(arr_str[0].equals("size")) {
				
				sb.append(stack.size() + "\n");
			}
			
			else if(arr_str[0].equals("empty")) {
				
				if(!stack.isEmpty()) {
					
					sb.append("0" + "\n");
				}
				else {
					sb.append("1" + "\n");
				}
			}
		}
		
		System.out.print(sb);
	}
}
profile
to be good programmer

0개의 댓글