Algorithm/BOJ

백준 10773번 C++

poopooreum 2023. 9. 5. 16:43
반응형
백준 10773번 제로

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

10773번: 제로

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

www.acmicpc.net



정답 코드

#include<iostream>
#include<stack>
using namespace std;
int main() {
	stack<int>s;
	int k;
	cin >> k;
	for (int x = 0; x < k; x++) {
		int n;
		cin >> n;
		if (n == 0)
			s.pop();
		else
			s.push(n);
	}
	int sum = 0;
	while(s.empty()!=1){

		sum += s.top();
		s.pop();
	}
	cout << sum;
}

문제 풀이

입력 받은 수가 0일때는 가장 최근에 입력한 수를 없애야 해서 후입선출 구조를 가진 stack을 이용해서 풀었습니다. 입력받는대로 스택에 push를 하다가 0일때만
pop함수를 통해 가장 최근값을 삭제시켜주었습니다.

반응형