본문 바로가기

Java/백준

[JAVA] 백준 10773 제로

10773번: 제로 (acmicpc.net)

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

 

 

풀이 과정 

 

- for문을 사용하여 num이하일 때까지 아래 반복

  - input이 0이 들어올 때는 stack.pop()

  - input이 0이 아닌 숫자가 들어올 때는 stack.push()

 

- result[ ] 배열에 남은 stack의 요소를 pop하여 담고  합 구함 

 

정답

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;

public class Main {
   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 num = Integer.parseInt(br.readLine());
       int result[] = new int[num];
       
       for(int i=0; i<num; i++)
       {
           int input = Integer.parseInt(br.readLine());
           
           if(input==0)
           {
               if(!stack.isEmpty())
               {
                   stack.pop();
               }
           }
           else
           {
               stack.push(input);
           }
       }
       
       int sum = 0;
       for(int i=0; i<num; i++)
       {
           if(!stack.isEmpty())
        	   result[i] = stack.pop();
           sum+=result[i];
       }

       bw.write(sum+"");
       
       bw.flush();
       bw.close();
           
   }
}

 

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

[JAVA] 백준 4949 균형잡힌 세상  (2) 2024.02.08
[JAVA] 백준 9012 괄호  (0) 2024.02.08
[JAVA] 백준 28278 스택 2  (0) 2024.02.08
[JAVA] 백준 18870 좌표 압축  (1) 2024.02.07
[JAVA] 백준 10814 나이순 정렬  (0) 2024.02.07