[JAVA] 제로

NoHae·2025년 4월 14일

백준

목록 보기
38/106

문제 출처

단계별로 풀어보기 > 스택 큐 덱 > 제로
https://www.acmicpc.net/problem/10773

문제 설명

앞으로 입력될 정수의 갯수 K가 주어질 때,
입력 된 정수가 0인 경우 가장 마지막으로 쓰여진 값을 지우고,
나머지 정수가 입력될 경우 해당 수를 적는다.

총 입력된 정수의 합을 구하여라

접근 방법

간단한 스택 문제로, 0이 주어지지 않을 때는 push, 0이 주어지고 스택이 비어있을 때 continue, 0이 주어질 때를 경우에는 pop로 나누어 풀이한다.

import java.io.*;
import java.util.Stack;

public class 제로 {

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

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

        for(int i=0; i<K; i++){
            int N = Integer.parseInt(br.readLine());

            if(N != 0){
                stack.push(N);
            }else if(N == 0 && stack.empty()){
                continue;
            }
            else {
                stack.pop();
            }
        }

        int result = 0;
        for (Integer i : stack) {
            result+=i;
        }

        bw.write(String.valueOf(result));
        bw.flush();
        bw.close();
        br.close();
    }
}

Review

import java.io.*;
import java.util.Stack;

public class 제로_review {

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

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

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

        for(int i =0; i<K; i++) {
            int N = Integer.parseInt(br.readLine());

            if (N == 0 && !stack.isEmpty()) {
                stack.pop();
            } else if (N == 0 && stack.isEmpty()) {
                continue;
            } else {
                stack.push(N);
            }
        }

            int result = 0;
            while(!stack.isEmpty()){
                result+= stack.pop();
            }

            bw.write(String.valueOf(result));
            bw.flush();
            br.close();
            bw.close();
        }
    }

알게된 점

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글