본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 10773번: 제로 -Java

728x90

[백준알고리즘] 10773번: 제로 -Java

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

 

10773번: 제로

문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤

www.acmicpc.net

 

stack문제이다. 마침 Java 연습하고 있었는데 개이득 봤다. 좋았다!

 

 

Java에서는 java.util에서 Stack을 제공하고 있어서 편하게 코드를 짤 수 있었다.

 

문제는 사실 처음 봤을 때에는 배열을 이용할까 하다가 분류가 Stack이니 만큼 stack을 사용하기로 했다.

 

0이 나올 때 지울 수가 항상 존재함을 보장한다고 했으니 굳이 조건을 저렇게까지 써주지 않아도 되지만 써줬다!

 

오랜만에 자바 연습한 걸로 만족해야 될 것 같다.

 

 

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

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int i, t, sum = 0;
		
		/* input */
		int N = Integer.parseInt(br.readLine());
		Stack<Integer> stack = new Stack<Integer>();
		
		/* stack */
		for(i = 0; i < N; i++) {
			t = Integer.parseInt(br.readLine());
			
			if(t == 0 && !stack.isEmpty()) {
				stack.pop();
			}
			else if(t != 0){
				stack.push(t);
			}
		}
		
		/* sum */
		while(!stack.isEmpty()) {
			sum += stack.pop();
		}
		
		System.out.println(sum);
	}

}

 

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90