백준

[백준] 10773번 : 제로 (JAVA)

lucy1215 2023. 1. 9. 12:10
728x90
반응형

10828번 : 스택에 이어서 다음 스택 관련 문제인 10773번 : 제로 문제를 풀었다.

 

스택에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다.

https://lucy1215.tistory.com/17

 

[자료구조] 스택 (Stack)

🚩스택 (Stack)의 개념 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO (Last In First Out) 형식의 자료 구조 ❓스택 (Stack)의 특징 1. 먼저 들어간 자료가 나중에 나옴. LIFO구조 2. 시스템 해킹에서 버퍼오버

lucy1215.tistory.com

 

바로 앞 문제인 10828번 : 스택 에 대한 내용은 바로 앞의 블로그에서 확인하면 된다.

https://lucy1215.tistory.com/18

 

[백준] 10828번 : 스택 (JAVA)

바로 전에 스택을 공부한 뒤, 그 내용을 바탕으로 스택 문제 1번인 10828번 : 스택 문제를 풀었다. 스택에 대해 아직 이해하지 못했다면 다음의 블로그에서 확인하면 된다. https://lucy1215.tistory.com/17

lucy1215.tistory.com

 


<문제>

 

<문제 해석>

스택을 이용하여 

0이 아닌 숫자일 때는 stack에 그 수를 push하고

숫자가 0이면 stack의 맨 위 숫자를 pop한다.

 

마지막에 stack에 있는 숫자들의 합을 구한다.

 

 

 

 

<문제 해결>

이 문제 또한, 스택 관련 문제이다.

스택에 대해 이해하고 있다면 어렵지 않게 풀었을 것이다.

 

이 문제는 2단계로 나눌 수 있는데,

 

1. 숫자가 0이면 pop  / 0이 아니면 push    ====> run() 함수

 

2. 마지막에 stack에 있는 숫자들의 합     ====> sum() 함수

 

 

 

<코드>

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

public class Main {	

	static int n;
	static Stack<Integer> stack = new Stack<>();
	static int a;
	
	public static void main(String[] args) throws IOException {

		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		
		for(int i=0;i<n;i++) {
			a = sc.nextInt();
			run();
		}
		System.out.println(sum());
		
	}
	
	static void run() {
		if(a != 0) {
			stack.push(a);
		}else {
			stack.pop();
		}
	}
	
	static int sum() {
		int total = 0;
		for(int i=0;i<stack.size();i++) {
			total += stack.get(i);
		}
		return total;
	}

}

 

 


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

 

10773번: 제로

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

www.acmicpc.net

 

반응형