백준

백준 10773 - Java

으엉어엉 2024. 9. 4. 15:53
728x90

문제

 

풀이

풀이 1: Stack 을 이용한 풀이


import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Stack<Integer> stack = new Stack<Integer>();

        int K = sc.nextInt();

        for (int i = 0; i < K; i++) {
            int n = sc.nextInt();

            if(n==0){
                stack.pop();
            }else{
                stack.push(n);
            }
        }
        int num=0;
        for (Integer integer : stack) {
            num+=integer;
        }
        System.out.println(num);
    }
}

 

풀이 2 : 배열을 이용한 풀이

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int K = sc.nextInt();
        int[] stack = new int[K]; // 최대 K개의 숫자를 저장할 수 있는 배열
        int top = 0; // 현재 stack의 top을 나타내는 인덱스

        for (int i = 0; i < K; i++) {
            int n = sc.nextInt();

            if (n == 0) {
                if (top > 0) {
                    top--; // pop과 동일하게 top을 감소시킴
                }
            } else {
                stack[top] = n; // push와 동일하게 top 위치에 값 저장
                top++; // top을 증가시킴
            }
        }

        int num = 0;
        for (int i = 0; i < top; i++) {
            num += stack[i];
        }
        System.out.println(num);
    }
}
728x90

'백준' 카테고리의 다른 글

백준 12789 - Java  (0) 2024.09.04
백준 4949 - Java  (0) 2024.09.04
백준 28278 - Java  (0) 2024.09.04
백준 17103 - Java  (0) 2024.09.04
백준 13909 - Java  (0) 2024.09.04