문제풀이

BaekJoon(10773)::제로

문제

 

10773번: 제로

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

www.acmicpc.net

문제 파악

해당 문제는 0을 넣으면 가장 최근에 넣은 수를 빼는 문제

즉, 스택을 이용해서 문제를 해결하면 된다.

 

여기서 0은 지울수 있는 수가 있음을 보장하기 때문에 empty 여부를 확인 하지 않아도된다.

문제 풀이

딱히 풀이 할 것이 없어보인다.

스택을 이용하면 된다.

#include<iostream>
#include<stack>
using namespace std;

int main() {
	int n;
	cin >> n;
	stack<int> st;

	while (n--) {
		int num;
		cin >> num;
		if (num == 0) {
			st.pop();
		}
		else {
			st.push(num);
		}
	}

	int result = 0;
	while (!st.empty()) {
		result += st.top();
		st.pop();
	}

	cout << result << endl;

	return 0;
}

'문제풀이' 카테고리의 다른 글

BaekJoon(10844)::쉬운 계단 수  (0) 2021.12.14
BaekJoon(1463)::1로 만들기  (0) 2021.12.09
BaekJoon(9012)::괄호  (0) 2021.12.02
BaekJoon(1003)::피보나치 함수  (0) 2021.11.24
BaekJoon(1010)::다리놓기  (0) 2021.11.23