코딩테스트/Java

[BaekJoon][자료 구조][Stack][Java] 10773 : 제로

프린이8549 2024. 8. 10. 17:47
package BOJ.dataStructure.stack;

import java.io.IOException;
import java.util.Scanner;
import java.util.Stack;

public class BOJ10773 {
		
		public static void main(String[] args) throws NumberFormatException, IOException {
			Scanner sc = new Scanner(System.in);
			// 정수 k
			int k = sc.nextInt();
			// stack 생성
			// 0이 나올 시 가장 최근에 쓴 수를 지워야 한다는 점에서 스택 사용 
			Stack<Integer> stack = new Stack<>();
			// 최종적으로 적어 낸 수를 담기 위한 변수 선언
			int sum = 0;
			// 스택에 수 적어 넣기
			while(k-- > 0) {
				int num = sc.nextInt();
				// 0일 경우 pop;
				if(num == 0) {
					stack.pop(); 
					continue;
				}
				stack.push(num);
			}
			// 최종적으로 적은 숫자들을 합산하기
			while(!stack.isEmpty()) { 
				// empty() 는 자바 1부터 있던 레거시 코드, 현재는 컬렉션 클래스에 있는 isEmpty() 권장 
				sum += stack.pop();
			}
			
			System.out.println(sum);
            // 스캐너 닫기
			sc.close();
		}	
}