Little cabin in the woods

[백준] 10828. 스택 (JAVA) 본문

STUDY/알고리즘&코딩테스트

[백준] 10828. 스택 (JAVA)

Y... 2024. 11. 28. 15:14

이번에 풀어 볼 문제는 <백준 10828번.  스택>이다.

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


📌 문제 탐색하기

목표

규칙에 맞게 동작하는 스택 구현하기

해야 할 것

1. ArrayDeque로 스택 구현하기

2. 규칙에 맞게 동작하도록 하기

입력

[첫줄] 명령의 수 N (1 ≤ N ≤ 10,000)

[둘째줄 ~ ] 명령

아이디어

1. push : push() 메서드로 구현

2. pop : pop() 메서드로 구현 , 만약 스택이 비어있으면 -1 출력

3. size  : size() 메서드로 구현

4. empty : isEmpty() 메서드로 구현, 비어있으면 1 아니면 0 출력

5. top : peek() 메서드로 구현, 스택이 비어있으면 -1 출력

 

📌 코드 설계하기

1. ArrayDeque로 스택을 구현한다.

2. n개의 줄에 주어지는 명령을 처리하는 규칙을 작성한다.

 

📌 정답 코드

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

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());

        ArrayDeque<Integer> stack = new ArrayDeque<>();

        for (int i=0; i<N; i++){
            String commend = br.readLine();
            if(commend.equals("pop")){
                if(!stack.isEmpty()){
                    sb.append(stack.pop()+"\n");
                }else{
                    sb.append("-1"+"\n");
                }
            }else if (commend.equals("size")){
                sb.append(stack.size()+"\n");
            }else if (commend.equals("empty")){
                if(stack.isEmpty()){
                    sb.append("1"+"\n");
                }else{
                    sb.append("0"+"\n");
                }
            }else if(commend.equals("top")){
                if(!stack.isEmpty()){
                    sb.append(stack.peek()+"\n");
                }else{
                    sb.append("-1"+"\n");
                }
            }else{
                String[] cmdPush = commend.split(" ");
                String X = cmdPush[1];
                stack.push(Integer.parseInt(X));
            }
        }

        System.out.println(sb);

    }
}

 

📌 알게 된 것

stack.size() 로 스택의 사이즈를 반환할 수 있다.

 

String.contains("문자열"); 로 어떤 문자열이 포함되어 있는지 확인할 수 있다. (대소문자 구분)

 

문자열의 값을 비교할때는 .equals() 메서드 사용해서 비교하기.

"==" 는 객체의 주소값을 비교하는 연산자. primative 타입만 "=="로 값을 비교할 수 있음.