[BOJ] 백준 10828번 : 스택 - Java

2024. 12. 26. 11:26·Algorithm Solving/Java

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

 

  • int[ ]을 선언해서 구현하는 방법
import java.io.*;
import java.util.*;

public class Main {
        public static int[] stack;
        public static int size = 0;

        public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int N = Integer.parseInt(br.readLine());
        
        stack = new int[N];

        for (int i=0; i<N; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            String str = st.nextToken();
            if (str.equals("push")) {
                int num = Integer.parseInt(st.nextToken());
                push(num);
            } else if (str.equals("pop")){
                bw.write(pop()+"\n");
            } else if (str.equals("size")){
                bw.write(size()+"\n");
            } else if (str.equals("empty")){
                bw.write(empty()+"\n");
            } else if (str.equals("top")){
                bw.write(top()+"\n");
            }
        }
        bw.close();
    }
    
    /* push X: 정수 X를 스택에 넣는 연산이다. */
    public static void push(int num) {
        stack[size] = num;
        size ++;
    }

    /* pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 
            만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. */
    public static int pop() {
        
        if (size == 0) {
            // 스택 size가 0이면, 데이터가 없는 경우이므로 -1 반환
            return -1;
        } else {
            // 반환 할 값은 size-1번째 인덱스; push에서 size인덱스에 입력받은 값을 넣고, size는 ++해주기 때문에
            int result = stack[size-1]; 
            stack[size-1] = 0;  // result에 pop할 값을 넣었으므로, 0으로 초기화
            size --;
            return result;
        }
    }

    /* size: 스택에 들어있는 정수의 개수를 출력한다. */
    public static int size() {
        return size;
    }

    /* empty: 스택이 비어있으면 1, 아니면 0을 출력한다. */
    public static int empty() {
        if (size == 0) {
            // 스택 size가 0이면, 스택이 비어있는 경우이므로 1 반환
            return 1;
        } else {
            return 0;
        }
    }

    /* top: 스택의 가장 위에 있는 정수를 출력한다. 
            만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. */
    public static int top() {
        if (size == 0) {
            // 스택 size가 0이면, 스택에 들어있는 정수가 없는 경우이므로 -1 반환
            return -1;
        } else {
            // 반환 할 값은 size-1번째 인덱스; push에서 size인덱스에 입력받은 값을 넣고, size는 ++해주기 때문에
            return stack[size-1];
        }
    }
}

 

  • Stack<Integer> 을 선언해서 구현하는 방법
import java.io.*;
import java.util.*;

public class Main {
        public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        int N = Integer.parseInt(br.readLine());
        
        Stack<Integer> stack = new Stack<>();

        for (int i=0; i<N; i++) {
            st = new StringTokenizer(br.readLine(), " ");
            String str = st.nextToken();
            if (str.equals("push")) {
                int num = Integer.parseInt(st.nextToken());
                stack.push(num);
            } 
            else if (str.equals("pop")){
                if (stack.empty()) bw.write(-1+"\n");
                else bw.write(stack.pop()+"\n");
            } 
            else if (str.equals("size")){
                bw.write(stack.size()+"\n");
            } 
            else if (str.equals("empty")){
                if (stack.empty()) bw.write(1+"\n");
                else bw.write(0+"\n");
            } 
            else if (str.equals("top")){
                if (stack.empty()) bw.write(-1+"\n");
                else bw.write(stack.peek()+"\n");
            }
        }
        bw.close();
    }
}
저작자표시 비영리 변경금지 (새창열림)

'Algorithm Solving > Java' 카테고리의 다른 글

[BOJ] 백준 7569번 : 토마토 - Java  (0) 2024.12.29
[BOJ] 백준 1697번 : 숨바꼭질 - Java  (1) 2024.12.26
[BOJ] 백준 1929번 : 소수 구하기 - Java  (0) 2024.12.23
[BOJ] 백준 2751번 : 수 정렬하기 2 - Java  (1) 2024.12.20
[BOJ] 백준 1260번 : DFS와 BFS - Java  (0) 2024.12.19
'Algorithm Solving/Java' 카테고리의 다른 글
  • [BOJ] 백준 7569번 : 토마토 - Java
  • [BOJ] 백준 1697번 : 숨바꼭질 - Java
  • [BOJ] 백준 1929번 : 소수 구하기 - Java
  • [BOJ] 백준 2751번 : 수 정렬하기 2 - Java
기만나🐸
기만나🐸
공부한 내용을 기록합시다 🔥🔥🔥
  • 기만나🐸
    기만나의 공부 기록 🤓
    기만나🐸
  • 전체
    오늘
    어제
    • ALL (147) N
      • TIL (Today I Learned) (56) N
      • Dev Projects (15)
      • Algorithm Solving (67)
        • Java (52)
        • SQL (15)
      • Certifications (8)
        • 정보처리기사 실기 (8)
  • 인기 글

  • 태그

    Google Fonts
    프로그래머스
    dp
    greedy
    Firebase
    websocket
    백트래킹
    java
    DFS
    bootstrap
    다이나믹프로그래밍
    jQuery
    자료구조
    시뮬레이션
    BOJ
    Subquery
    HTML
    sql
    그리디
    백준
    join
    programmers
    BFS
    mysql
    완전탐색
    jwt
    GROUP BY
    javascript
    CSS
    jpa
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기만나🐸
[BOJ] 백준 10828번 : 스택 - Java
상단으로

티스토리툴바