[백준][Java] 10773 - 제로

박현아·2025년 2월 6일
0

백준

목록 보기
3/4

👩‍💻 문제

🙋‍♀️ 답변

package backjoon;

import java.util.Scanner;
import java.util.Stack;

public class 제로_10773 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		Stack<Integer> stack = new Stack<>();
		
		int n = sc.nextInt();
		
		for(int i =0; i<n; i++) {
			int a = sc.nextInt();
			if(a != 0) {
				stack.push(a);
			} else if(!stack.isEmpty()){
				stack.pop();
			}
		}
		
		sc.close();
		
		// 스택에 남아있는 값들의 합 구하기
		int sum = 0;
		while(!stack.isEmpty()) {
			sum += stack.pop();
		}
		
		System.out.println(sum);
	}
}

⭐️

  • int n 으로 총 입력 받을 개수를 저장해준다.
  • n번 동안 다음에 입력받은 숫자가 0이 아니면 stack에 담아주고 (stack.push(a);), 0이면 이전에 stack에 저장되어 있던 숫자를 삭제해준다. (stack.pop();)
  • 스택에 남아있는 값들의 합을 sum으로 주고 0으로 초기값을 설정해준다.
  • stack이 안 비었다면 숫자를 하나씩 빼서 (stack.pop();) sum에 더해준다.
  • 마지막에 sum을 프린트하면 stack이 비었을 경우에는 0이 출력되고, stack에 숫자가 있는 경우에는 총합이 출력된다.

🤔

오랜만에 백준을 풀어봤는데 처음부터 다 써야되는 게 어색하긴하다!
stack의 stack.push()와 stack.pop()을 잘 적용해서 써볼 수 있어서 좋았다.

0개의 댓글