본문 바로가기

백준

[백준] 제로 10773번

728x90

코드 힌트

  1. 입력 및 출력 처리:
    • BufferedReader를 사용하여 입력을 효율적으로 받고, BufferedWriter를 사용하여 출력 속도를 높입니다.
  2. 스택 연산 처리:
    • Push (정수 입력): 입력된 정수를 스택에 추가합니다.
    • Pop (입력 0): 스택에서 가장 위의 정수를 제거합니다. 스택이 비어있지 않을 때만 제거합니다.
  3. 결과 계산:
    • 스택에 남아있는 모든 정수의 합을 계산합니다. 스택이 비어있을 때까지 pop하여 정수를 추출하고, 그 값을 result 변수에 추가합니다.
  4. 최종 결과 출력:
    • 계산된 합계를 출력합니다.

 

 

추가적인 정보

스택이 비어있을 때 pop 호출 주의: 문제의 가정에 따라 스택이 비어있을 경우의 처리도 고려해야 하지만, 여기서는 문제 요구에 따라 비어있지 않다고 가정하고 구현되었습니다.


정답은 더보기 클릭

더보기
import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        // 입력을 효율적으로 받기 위해 BufferedReader 사용
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 출력을 효율적으로 하기 위해 BufferedWriter 사용
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        // 정수를 저장할 Stack 객체를 생성
        Stack<Integer> stack = new Stack<>();
        
        // 첫 번째 줄에서 총 명령어 개수를 입력받음
        int n = Integer.parseInt(br.readLine());
        
        // 명령어 개수만큼 반복
        for (int i = 0; i < n; i++) {
            // 각 명령어를 정수로 입력받음
            int input = Integer.parseInt(br.readLine());
            if (input == 0) {
                // 입력이 0일 경우, 스택에서 가장 위의 정수를 제거함
                // 스택이 비어있을 때 pop을 호출하면 오류가 발생할 수 있지만
                // 문제의 요구에 따라 스택이 비어있는 경우가 없다고 가정
                if (!stack.isEmpty()) {
                    stack.pop();
                }
            } else {
                // 입력이 0이 아닐 경우, 스택에 입력된 정수를 추가함
                stack.push(input);
            }
        }
        
        // 스택에 남아있는 모든 정수의 합을 계산
        int result = 0;
        while (!stack.isEmpty()) {
            result += stack.pop();
        }
        
        // 결과를 출력
        bw.write(result + "\n");
        // 출력 버퍼를 비우고 닫음
        bw.flush();
        bw.close();
    }
}

 

728x90

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

[백준] 더하기 사이클 1110번  (0) 2024.08.14
[백준] 괄호 9012번  (0) 2024.08.08
[백준] 스택 2 28278번  (0) 2024.08.08
[백준] 그림 1926번  (0) 2024.07.31
[백준] 수 찾기 1920번  (0) 2024.07.30